Как работает 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`).