Какие примитивы синхронизации есть в asyncio?

В asyncio есть Lock, Event, Condition, Semaphore, BoundedSemaphore и Barrier. Они координируют задачи event loop, но не заменяют потоковые или межпроцессные блокировки.

Короткий ответ

Что ответить на собеседовании

В asyncio есть Lock, Event, Condition, Semaphore, BoundedSemaphore и Barrier. Они координируют задачи event loop, но не заменяют потоковые или межпроцессные блокировки.

Подробный разбор

Ответ с пояснениями

В asyncio есть Lock, Event, Condition, Semaphore, BoundedSemaphore и Barrier. Они координируют задачи event loop, но не заменяют потоковые или межпроцессные блокировки.

Lock защищает критическую секцию, Event уведомляет ожидающих, Condition объединяет ожидание условия с блокировкой. Semaphore ограничивает число одновременных участников, BoundedSemaphore дополнительно обнаруживает лишний release. Barrier синхронизирует заданное число задач на общей точке. Используйте async with, где он предусмотрен, и продумывайте отмену/таймаут ожидания. Эти примитивы не делают доступ к внешней БД атомарным и не предназначены для синхронизации OS-потоков.

Источник: docs.python.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее