Встречается на собеседованиях • сегодня
Какие можешь использовать механизмы синхронизации потоков
В 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
интервью вопросы и ответы