Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Python: io, bound, cpu

Какие задачи относятся к I/O-bound и CPU-bound

Этот вопрос проверяет понимание типов нагрузки и умение выбирать правильный подход к параллелизму и оптимизации.

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

I/O-bound задачи ограничены скоростью ввода-вывода: сеть, диск, база данных. CPU-bound задачи упираются в вычисления и загрузку процессора. Для I/O-bound задач хорошо подходит асинхронность и многопоточность, а для CPU-bound — распараллеливание по процессам. Неправильный выбор подхода приводит к потере производительности.

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

Перед оптимизацией важно понять, что именно ограничивает выполнение задачи: ожидание данных или вычисления.

Определение

I/O-bound task — задача, основное время которой уходит на ожидание операций ввода-вывода.
CPU-bound task — задача, основное время которой уходит на вычисления.

1) I/O-bound задачи

Такие задачи:

  • часто ждут ответа;

  • простаивают, пока выполняется I/O.

Примеры:

  • HTTP-запросы к внешним сервисам;

  • запросы к БД;

  • чтение и запись файлов.

Почему асинхронность помогает:

  • пока одна операция ждёт I/O, CPU может выполнять другую.

2) CPU-bound задачи

Такие задачи:

  • постоянно загружают процессор;

  • почти не ждут внешних ресурсов.

Примеры:

  • обработка изображений;

  • шифрование;

  • сложные математические вычисления.

Особенность Python:

  • GIL мешает эффективно использовать CPU в потоках;

  • поэтому применяют multiprocessing.

3) Практический выбор подхода

Обычно:

  • async/await, event loop → I/O-bound;

  • multiprocessing → CPU-bound;

  • threading → I/O-bound (с блокирующими библиотеками).

Вывод

Оптимизация начинается с классификации задачи. Асинхронность ускоряет I/O-bound задачи, а CPU-bound требуют параллелизма на уровне процессов.

Уровень

  • Рейтинг:

    5

  • Сложность:

    4

Навыки

  • Python

    Python

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

#io

#bound

#cpu

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