Event loop отслеживает готовые события и запускает соответствующие callbacks или продолжения корутин. Пока операция I/O ожидает готовности, цикл может обслуживать другие задачи.
Как работает event loop, на котором построена асинхронность? Что происходит в этом цикле?
Event loop отслеживает готовые события и запускает соответствующие callbacks или продолжения корутин. Пока операция I/O ожидает готовности, цикл может обслуживать другие задачи.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Event loop отслеживает готовые события и запускает соответствующие callbacks или продолжения корутин. Пока операция I/O ожидает готовности, цикл может обслуживать другие задачи.
В asyncio корутина работает до точки, где await действительно приостанавливает её; после завершения ожидаемой операции продолжение снова становится готовым. Само наличие async/await не создаёт отдельный поток на каждый вызов.
Долгое синхронное вычисление или блокирующий I/O внутри обработчика останавливает продвижение других задач этого цикла. CPU-работу выносят в подходящие workers, блокирующие вызовы — в thread pool или заменяют неблокирующими. Очереди и фазы конкретного цикла отличаются между Python, браузером и Node.js.