Этот вопрос проверяет понимание концепции event loop в асинхронном программировании на Python.
Event loop — это цикл, который постоянно проверяет и выполняет задачи из очереди. Он ждет события (например, завершение IO-операции) и запускает соответствующие обработчики. Это позволяет efficiently manage множество IO-bound задач без создания множества потоков.
Event loop является ядром асинхронного программирования в Python (модуль asyncio).
Как работает event loop:
Event loop работает в одном потоке и управляет выполнением асинхронных задач.
Он имеет очередь задач (tasks) и постоянно проверяет, какие из них готовы к выполнению.
Когда задача ждет IO (например, ответ от сервера), event loop приостанавливает ее и переключается на другие задачи.
Когда IO-операция завершается, event loop возобновляет выполнение задачи.
Пример с asyncio:
import asyncio
async def io_task():
print("Начало IO задачи")
await asyncio.sleep(2) # Имитация IO-операции
print("IO задача завершена")
async def main():
await asyncio.gather(io_task(), io_task(), io_task())
asyncio.run(main())В этом примере event loop запускает три задачи одновременно. Во время ожидания asyncio.sleep он переключается на другие задачи, что позволяет efficiently использовать время.