Основные проблемы — многократное создание event loop, блокировка синхронных потоков ожиданием, неограниченный fan-out и несовместимый жизненный цикл async-клиентов.
Если задач будет много и асинхронный код запускается из синхронного, где будут основные проблемы с производительностью?
Основные проблемы — многократное создание event loop, блокировка синхронных потоков ожиданием, неограниченный fan-out и несовместимый жизненный цикл async-клиентов.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Основные проблемы — многократное создание event loop, блокировка синхронных потоков ожиданием, неограниченный fan-out и несовместимый жизненный цикл async-клиентов.
Запуск asyncio.run на каждую мелкую операцию мешает переиспользовать соединения и добавляет расходы. Миллионы одновременно созданных задач занимают память, даже если I/O неблокирующий.
Лучше иметь управляемый async-контур с ограниченной очередью и пулом соединений либо сделать вызывающий сценарий асинхронным. CPU-код и синхронные библиотеки всё равно блокируют loop и требуют отдельного исполнения. Измеряйте event loop lag, ожидание пулов и пропускную способность; наличие async в сигнатуре само по себе не ускоряет приложение.