asyncio event loop ожидает готовность I/O через платформенный механизм: на Linux это обычно epoll, а kqueue относится к BSD/macOS. Между ожиданиями loop выполняет готовые callbacks и продвигает tasks.
Какова связь между циклом событий 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.
Само ядро не исполняет Python-coroutine: оно сообщает о готовности дескриптора, после чего event loop завершает ожидание и планирует продолжение. Таймеры и очередь готовых задач тоже управляются loop. Конкретная реализация зависит от ОС и выбранного event loop; Windows использует другую модель. Блокирующая функция в callback всё равно задерживает весь цикл, независимо от эффективности epoll.