Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

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

Приведи пример: как решить 10 CPU-bound и 10 IO-bound задач на Python?

Этот вопрос проверяет умение выбирать подходящий метод параллелизма для разных типов задач в Python.

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

Для CPU-bound задач используйте многопроцессность (модуль multiprocessing), чтобы обойти GIL и задействовать несколько ядер. Для IO-bound задач используйте многопоточность (модуль threading) или асинхронное программирование (модуль asyncio), чтобы эффективно ждать завершения операций ввода-вывода.

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

В Python разные типы задач требуют разных подходов к параллелизму из-за ограничений GIL.

Решение CPU-bound задач:

  • Используйте модуль multiprocessing, который создает отдельные процессы с собственным интерпретатором и памятью.

  • Это позволяет использовать несколько ядер CPU для параллельных вычислений.

  • Пример:

    from multiprocessing import Pool
    
    def cpu_task(x):
        return x * x
    
    with Pool(processes=4) as pool:
        results = pool.map(cpu_task, range(10))

Решение IO-bound задач:

  • Используйте модуль threading для создания потоков, которые могут ждать IO без блокировки.

  • Или используйте асинхронное программирование с asyncio для более эффективного управления большим количеством задач.

  • Пример с потоками:

    import threading
    import requests
    
    def io_task(url):
        response = requests.get(url)
        return response.status_code
    
    threads = []
    for url in urls:
        thread = threading.Thread(target=io_task, args=(url,))
        thread.start()
        threads.append(thread)
    
    for thread in threads:
        thread.join()

Уровень

  • Рейтинг:

    2

  • Сложность:

    7

Навыки

  • Python

    Python

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

#cpu-bound

#io-bound

#multiprocessing

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