Sobes.tech
Назад к вопросам
Middle
4

Как устроен Event Loop внутри? Расскажи про селектор и взаимодействие с ОС.

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

Event Loop — это механизм, который позволяет асинхронно обрабатывать события и задачи в однопоточном окружении, например, в Python с asyncio. Внутри Event Loop есть селектор (например, epoll на Linux, kqueue на BSD/macOS, или IOCP на Windows), который взаимодействует с ОС для отслеживания готовности файловых дескрипторов (сокетов, файлов и т.п.).

Селектор регистрирует интересующие события (чтение, запись) и блокируется, ожидая, пока ОС не уведомит о готовности. Когда событие происходит, Event Loop получает уведомление и запускает соответствующие корутины или колбэки. Таким образом, Event Loop эффективно управляет множеством асинхронных операций без создания большого количества потоков.

Пример использования asyncio в Python:

import asyncio

async def main():
    print('Hello')
    await asyncio.sleep(1)  # асинхронная пауза
    print('World')

asyncio.run(main())

Здесь Event Loop управляет выполнением корутины main, используя селектор для ожидания таймера.