Как работает асинхронность на верхних уровнях
Python
Middle
Без компании
Как работает асинхронность на верхних уровнях
Ответы
Асинхронность в Python реализована через механизм event loop и корутины. На верхнем уровне работают три ключевых компонента:
- **Event Loop** - управляет выполнением задач, переключаясь между ними при возникновении I/O операций
- **Корутины** (async/await) - специальные функции, которые могут приостанавливать выполнение
- **Задачи (Tasks)** - обёртки вокруг корутин, планируемые в event loop
Пример:
```
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())
```
Ключевые моменты:
- `await` передаёт управление обратно в event loop
- `asyncio.create_task()` запускает корутину как фоновую задачу
- Event loop автоматически переключается между готовыми задачами