В asyncio coroutine уступает управление при ожидании незавершённой операции, после чего event loop может выполнить другую готовую задачу. await не обязательно вызывает переключение каждый раз.
Похоже, вы затрудняетесь с ответом. Можете ли вы объяснить, как в Python можно переключаться между корутинами?
В asyncio coroutine уступает управление при ожидании незавершённой операции, после чего event loop может выполнить другую готовую задачу. await не обязательно вызывает переключение каждый раз.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В asyncio coroutine уступает управление при ожидании незавершённой операции, после чего event loop может выполнить другую готовую задачу. await не обязательно вызывает переключение каждый раз.
Если ожидаемый результат уже готов, выполнение может продолжиться сразу. Долгий синхронный цикл без точек ожидания блокирует loop и остальные coroutine. Для конкурентной работы задачи планируют через create_task() или TaskGroup, а CPU-вычисления выносят в подходящий исполнитель. asyncio.sleep(0) позволяет уступить управление, но не исправляет неправильно организованную тяжёлую работу сам по себе.