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

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