Как работает асинхронность в Python
Python
Middle
Без компании
Как работает асинхронность в Python
Ответы
Асинхронность в Python работает через механизм event loop и корутины (coroutines). Основные компоненты:
- **Event Loop** - управляет выполнением задач, переключаясь между ними при ожидании I/O
- **Корутины** - специальные функции, объявленные через `async def`, которые могут приостанавливать выполнение через `await`
- **Awaitables** - объекты (корутины, Tasks, Futures), которые можно ждать через `await`
Пример:
```
import asyncio
async def fetch_data():
print("Начинаем загрузку")
await asyncio.sleep(2) # Имитация I/O операции
print("Данные загружены")
return {"data": 123}
async def main():
task = asyncio.create_task(fetch_data())
print("Делаем что-то параллельно")
await task # Ждем завершения задачи
asyncio.run(main())
```
Ключевые особенности:
- Не блокирует поток выполнения при ожидании I/O
- Использует кооперативную многозадачность (корутины добровольно уступают контроль)
- Работает в одном потоке (но может использовать несколько через ThreadPoolExecutor)