Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Python: event, loop

Что произойдёт, если в event loop выполнить блокирующую CPU-bound операцию?

Вопрос проверяет понимание того, как блокирующий код влияет на асинхронные приложения.

Короткий ответ

Если в event loop выполнить блокирующую CPU-bound операцию, весь цикл событий остановится до её завершения. В это время другие корутины не будут выполняться, а запросы не будут обрабатываться. Это приводит к задержкам и падению производительности. Поэтому CPU-bound задачи выносят в отдельные процессы или executors.

Длинный ответ

Event loop работает в одном потоке и переключает задачи только тогда, когда они добровольно уступают управление через await.

Что происходит при блокирующей операции

Если внутри корутины выполнить:

  • тяжёлый расчёт

  • синхронный вызов

  • долгий цикл

то:

  1. управление не возвращается loop

  2. другие задачи не выполняются

  3. сервер перестаёт отвечать

Пример проблемы:

async def handler():
    heavy_calculation()  # блокирует loop
    return "done"

Как правильно выполнять CPU-bound задачи

Используют:

  1. ProcessPoolExecutor

  2. multiprocessing

  3. внешние сервисы обработки

Пример:

loop.run_in_executor(None, heavy_calculation)

Когда это критично

Особенно заметно:

  • в FastAPI

  • в aiohttp

  • в websocket-серверах

Даже одна блокирующая операция может остановить обработку сотен соединений.

Вывод

CPU-bound операции внутри event loop блокируют весь цикл и останавливают выполнение корутин. Их необходимо выносить за пределы event loop.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Python

    Python

Ключевые слова

#event

#loop

Подпишись на Python Developer в телеграм