Какова связь между циклом событий asyncio и системными вызовами epoll/kqueue ядра Linux?

asyncio event loop ожидает готовность I/O через платформенный механизм: на Linux это обычно epoll, а kqueue относится к BSD/macOS. Между ожиданиями loop выполняет готовые callbacks и продвигает tasks.

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

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

asyncio event loop ожидает готовность I/O через платформенный механизм: на Linux это обычно epoll, а kqueue относится к BSD/macOS. Между ожиданиями loop выполняет готовые callbacks и продвигает tasks.

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

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

asyncio event loop ожидает готовность I/O через платформенный механизм: на Linux это обычно epoll, а kqueue относится к BSD/macOS. Между ожиданиями loop выполняет готовые callbacks и продвигает tasks.

Само ядро не исполняет Python-coroutine: оно сообщает о готовности дескриптора, после чего event loop завершает ожидание и планирует продолжение. Таймеры и очередь готовых задач тоже управляются loop. Конкретная реализация зависит от ОС и выбранного event loop; Windows использует другую модель. Блокирующая функция в callback всё равно задерживает весь цикл, независимо от эффективности epoll.

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

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

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

Подробнее