Встречается на 1% собеседований по Python
Какие знаешь примитивы синхронизации в asyncio
В asyncio есть несколько примитивов синхронизации, аналогичных threading, но работающих с корутинами:
- Lock - базовый мьютекс:
python
lock = asyncio.Lock()
async with lock:
# критическая секция- Event - уведомление между задачами:
python
event = asyncio.Event()
await event.wait() # блокировка
event.set() # разблокировка всех ожидающих- Semaphore - ограничение параллелизма:
python
sem = asyncio.Semaphore(5)
async with sem:
# не более 5 одновременных выполнений- Condition - сложные условия ожидания:
python
cond = asyncio.Condition()
async with cond:
await cond.wait_for(predicate)- Barrier - синхронизация группы задач:
python
barrier = asyncio.Barrier(3)
await barrier.wait() # ждет 3 вызоваВсе примитивы являются awaitable и работают в рамках одного event loop. Важно избегать deadlock'ов, так как asyncio однопоточный.

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