Встречается на 1% собеседований по Python
Какие можешь использовать механизмы синхронизации потоков
В Python для синхронизации потоков можно использовать:
- Lock (блокировка) - базовый примитив, позволяет только одному потоку выполнять критическую секцию:
python
from threading import Lock
lock = Lock()
with lock:
# критическая секция- RLock (реентерабельная блокировка) - позволяет одному потоку захватывать блокировку несколько раз.
- Semaphore - ограничивает количество потоков, которые могут одновременно получить доступ к ресурсу:
python
from threading import Semaphore
sem = Semaphore(3) # максимум 3 потока
sem.acquire()
# работа с ресурсом
sem.release()- Condition - позволяет потокам ждать определенного условия:
python
from threading import Condition
cond = Condition()
with cond:
while not resource_available:
cond.wait()
# работа с ресурсом- Event - простой механизм для уведомления между потоками:
python
from threading import Event
event = Event()
# поток 1
event.wait() # ждет установки флага
# поток 2
event.set() # уведомляет ожидающие потоки- Barrier - синхронизирует заданное количество потоков в определенной точке.
Для сложных сценариев лучше использовать threading или multiprocessing модули, а для IO-bound задач - asyncio.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы