Как работает Asyncio

Python Middle Без компании
Как работает Asyncio
Ответы
Asyncio — это библиотека Python для асинхронного программирования, основанная на концепции событийного цикла (event loop). Она позволяет писать конкурентный код с использованием корутин (coroutines) и ключевых слов `async/await`. **Основные компоненты:** - **Event Loop** — управляет выполнением задач и обрабатывает события (I/O, таймеры и т.д.). - **Корутины** — функции, объявленные через `async def`, которые могут приостанавливать выполнение через `await`. - **Future/Task** — объекты, представляющие результат асинхронной операции. **Пример:** ``` import asyncio async def fetch_data(): print("Начало загрузки") await asyncio.sleep(2) # Имитация I/O операции print("Данные загружены") return "Результат" async def main(): task = asyncio.create_task(fetch_data()) print("Задача создана") result = await task print(f"Получено: {result}") asyncio.run(main()) ``` **Как работает:** - `asyncio.run()` запускает событийный цикл. - `create_task()` добавляет корутину в цикл как Task. - При `await` управление возвращается в цикл, пока операция не завершится. - Цикл выполняет другие задачи во время ожидания. **Плюсы:** - Эффективность для I/O-bound задач. - Читаемость кода (по сравнению с колбэками). **Минусы:** - Не подходит для CPU-bound операций (нужен `multiprocessing`). - Требует поддержки асинхронных библиотек (например, `aiohttp` вместо `requests`).