В asyncio есть Lock, Event, Condition, Semaphore, BoundedSemaphore и Barrier. Они координируют задачи event loop, но не заменяют потоковые или межпроцессные блокировки.
Какие примитивы синхронизации есть в asyncio?
В 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.