Sobes.tech
Назад к вопросам
Junior — Middle
63

Какое назначение у семафора в языке Python и в каких случаях его стоит использовать?

Компании, где спрашивали
Баланс-ПлатформаБаланс-Платформа

Ответ от нейросети

sobes.tech AI

Семафор в Python — это механизм синхронизации из модуля threading, который ограничивает количество потоков, одновременно выполняющих определённый участок кода. Он хранит счётчик, который уменьшается при входе в критическую секцию и увеличивается при выходе.

Семафоры полезны, когда нужно контролировать доступ к ограниченному ресурсу, например, к пулу соединений или к файлам, чтобы не превысить заданное число одновременных операций.

Пример использования:

import threading
import time

sem = threading.Semaphore(3)  # максимум 3 потока одновременно

def worker(num):
    with sem:
        print(f"Поток {num} вошёл")
        time.sleep(2)
        print(f"Поток {num} вышел")

threads = []
for i in range(5):
    t = threading.Thread(target=worker, args=(i,))
    t.start()
    threads.append(t)

for t in threads:
    t.join()

В этом примере одновременно могут работать только 3 потока, остальные ждут освобождения семафора.