Как переключаются корутины в asyncio
Python
Senior
Без компании
Как переключаются корутины в asyncio
Ответы
Корутины в asyncio переключаются через механизм событийного цикла (event loop). Когда корутина достигает точки ожидания (например, `await`), она приостанавливается, и управление передаётся обратно в event loop, который решает, какую следующую корутину запустить.
Пример:
```
import asyncio
async def task1():
print("Task 1 started")
await asyncio.sleep(1)
print("Task 1 finished")
async def task2():
print("Task 2 started")
await asyncio.sleep(2)
print("Task 2 finished")
async def main():
await asyncio.gather(task1(), task2())
asyncio.run(main())
```
Здесь `await asyncio.sleep()` передаёт управление обратно в event loop, позволяя выполняться другим корутинам. Event loop отслеживает состояние всех корутин и переключает контекст при необходимости.