За счет чего происходит переключение в asyncio
Python
Senior
Мой Офис
За счет чего происходит переключение в asyncio
Ответы
Asyncio использует механизм событийного цикла (event loop) для переключения между корутинами. Когда корутина достигает точки ожидания (await), управление возвращается в event loop, который решает, какую следующую корутину запустить. Это позволяет эффективно использовать ресурсы, избегая блокировок.
Ключевые моменты:
- **Awaitable объекты** (корутины, задачи, футуры) приостанавливают выполнение корутины
- **Event loop** управляет очередью готовых к выполнению задач
- **Неблокирующие вызовы** (например, I/O операции) регистрируют callback в event loop
Пример:
```
import asyncio
async def task1():
print("Start task1")
await asyncio.sleep(1) # Передача управления обратно в event loop
print("End task1")
async def task2():
print("Start task2")
await asyncio.sleep(0.5)
print("End task2")
async def main():
await asyncio.gather(task1(), task2())
asyncio.run(main())
```