Вопрос проверяет понимание различий между многопоточностью и многопроцессорностью, а также умение выбирать правильный инструмент для задач, связанных с параллелизмом в Python.
Multiprocessing в Python применяется для параллельного выполнения задач, которые требуют интенсивных вычислений на процессоре (CPU-bound). Основная причина — глобальная блокировка интерпретатора (GIL), которая не позволяет нескольким потокам одного процесса одновременно выполнять Python-код. Multiprocessing обходит это ограничение, создавая отдельные процессы, каждый со своим GIL.
import multiprocessing
def compute_square(n):
return n * n
if __name__ == '__main__':
numbers = [1, 2, 3, 4, 5]
with multiprocessing.Pool() as pool:
results = pool.map(compute_square, numbers)
print(results) # [1, 4, 9, 16, 25]Для I/O-bound задач (работа с сетью, файлами, базами данных) multiprocessing избыточен — здесь лучше подходят потоки или асинхронность. Также multiprocessing потребляет больше памяти и ресурсов на создание процессов.
Вывод: Multiprocessing — оптимальный выбор для CPU-bound задач в Python, когда нужно ускорить вычисления за счет параллельного выполнения на нескольких ядрах процессора.