Что отвечает за переключение контекста в asyncio

Python Middle СБЕР Центр ИИ
Что отвечает за переключение контекста в asyncio
Ответы
В asyncio переключение контекста между корутинами (тасками) управляется **event loop**. Основные моменты: - Event loop решает, когда переключаться между задачами, основываясь на: - `await` выражениях (точки переключения) - I/O операциях (когда сокет/файл готов) - таймерах (`asyncio.sleep()`) - явных вызовах `loop.call_soon()` - Пример переключения: ``` async def task1(): print("Start 1") await asyncio.sleep(1) # Точка переключения print("End 1") async def task2(): print("Start 2") await asyncio.sleep(0.5) # Точка переключения print("End 2") asyncio.run(asyncio.gather(task1(), task2())) ``` - Важно: переключение происходит только в точках `await`, если корутина не отдает управление (например, долгий синхронный код), event loop блокируется.