Может ли CPU-bound задача надолго не дать другим потокам Python выполняться?

Да: особенно если C-расширение долго удерживает GIL, не освобождая его. Обычный CPU-bound Python-код в сборке с GIL переключается между потоками, но не даёт им параллельно выполнять байт-код.

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

Что ответить на собеседовании

Да: особенно если C-расширение долго удерживает GIL, не освобождая его. Обычный CPU-bound Python-код в сборке с GIL переключается между потоками, но не даёт им параллельно выполнять байт-код.

Подробный разбор

Ответ с пояснениями

Да: особенно если C-расширение долго удерживает GIL, не освобождая его. Обычный CPU-bound Python-код в сборке с GIL переключается между потоками, но не даёт им параллельно выполнять байт-код.

Интервал переключения не является жёсткой гарантией максимальной задержки: влияют C-код и планировщик ОС. Некоторые вычислительные библиотеки отпускают GIL и могут работать параллельно; free-threaded сборки имеют другую модель. Для чистого Python CPU-задачи часто изолируют процессами. Если тяжёлая работа выполняется прямо в потоке event loop, coroutine этого loop не продвинутся до возврата управления, даже если другие OS-потоки продолжают работать.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее