Встречается на собеседованиях • сегодня

Какие можешь использовать механизмы синхронизации потоков

В Python для синхронизации потоков можно использовать:

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

Для сложных сценариев лучше использовать threading или multiprocessing модули, а для IO-bound задач - asyncio.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы