Зачем нужен семафор в Python
Python
Middle
Баланс-Платформа
Зачем нужен семафор в Python
Ответы
Семафор в Python используется для контроля доступа к общему ресурсу в многопоточной или многопроцессорной среде. Он ограничивает количество потоков/процессов, которые могут одновременно работать с ресурсом.
Основные особенности:
- Счетчик семафора уменьшается при `acquire()` и увеличивается при `release()`
- Если счетчик = 0, поток блокируется до освобождения
- Полезен для ограничения параллельных соединений, доступа к API и т.д.
Пример с `threading.Semaphore`:
```
import threading
semaphore = threading.Semaphore(3) # Макс 3 потока одновременно
def worker():
with semaphore:
print(f"{threading.current_thread().name} работает")
# Критическая секция
threads = [threading.Thread(target=worker) for _ in range(10)]
for t in threads:
t.start()
for t in threads:
t.join()
```
В отличие от Lock, семафор позволяет нескольким потокам работать одновременно, но в ограниченном количестве.