Как работает event loop, на котором построена асинхронность? Что происходит в этом цикле?

Event loop отслеживает готовые события и запускает соответствующие callbacks или продолжения корутин. Пока операция I/O ожидает готовности, цикл может обслуживать другие задачи.

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

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

Event loop отслеживает готовые события и запускает соответствующие callbacks или продолжения корутин. Пока операция I/O ожидает готовности, цикл может обслуживать другие задачи.

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

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

Event loop отслеживает готовые события и запускает соответствующие callbacks или продолжения корутин. Пока операция I/O ожидает готовности, цикл может обслуживать другие задачи.

В asyncio корутина работает до точки, где await действительно приостанавливает её; после завершения ожидаемой операции продолжение снова становится готовым. Само наличие async/await не создаёт отдельный поток на каждый вызов.

Долгое синхронное вычисление или блокирующий I/O внутри обработчика останавливает продвижение других задач этого цикла. CPU-работу выносят в подходящие workers, блокирующие вызовы — в thread pool или заменяют неблокирующими. Очереди и фазы конкретного цикла отличаются между Python, браузером и Node.js.

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

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

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

Подробнее