Назад к вопросам
Баланс-Платформа
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 потока, остальные ждут освобождения семафора.