Как устроен asyncio

Python Senior VK
Как устроен asyncio
Ответы
Asyncio — это библиотека Python для асинхронного программирования, основанная на концепции event loop (цикла событий). Она использует корутины (coroutines) и ключевые слова `async/await` для неблокирующего выполнения задач. **Основные компоненты:** - **Event Loop** — управляет выполнением корутин и обрабатывает события (I/O, таймеры). - **Корутины** — функции, объявленные через `async def`, которые могут приостанавливать выполнение через `await`. - **Футуры (Futures)** — объекты, представляющие результат асинхронной операции. - **Задачи (Tasks)** — подкласс Future, обёртка вокруг корутины для запуска в event loop. **Пример:** ``` import asyncio async def foo(): print("Start") await asyncio.sleep(1) # Неблокирующая задержка print("End") async def main(): task = asyncio.create_task(foo()) # Запуск корутины как задачи await task # Ожидание завершения asyncio.run(main()) # Запуск event loop ``` **Принцип работы:** - Event loop выполняет корутины по очереди. - При встрече `await` управление возвращается в loop, который может переключиться на другую задачу. - I/O операции выполняются асинхронно через системные вызовы (epoll/kqueue).