Что именно ожидается при блокирующей операции, из-за чего потоки дают выигрыш в I/O-bound сценариях?

При блокирующем I/O поток часто ждёт ответа сети, диска или другого внешнего ресурса, не выполняя полезные вычисления. В это время другой поток может использовать CPU.

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

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

При блокирующем I/O поток часто ждёт ответа сети, диска или другого внешнего ресурса, не выполняя полезные вычисления. В это время другой поток может использовать CPU.

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

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

При блокирующем I/O поток часто ждёт ответа сети, диска или другого внешнего ресурса, не выполняя полезные вычисления. В это время другой поток может использовать CPU.

Например, после отправки SQL-запроса приложение ждёт, пока БД обработает его и вернёт данные. Блокирующий системный вызов переводит поток в ожидание, а соответствующие операции CPython обычно освобождают GIL. Поэтому несколько потоков могут перекрывать такие паузы. Это не ускоряет сам удалённый сервис и не снимает ограничения пула соединений. Если функция на самом деле выполняет длительный Python-цикл, а не ждёт I/O, обычные потоки не дают такого же выигрыша.

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

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

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

Подробнее