В чем преимущества параллельных функций для многопроцессорности в Python?

Я пишу приложение на Python, и мне нужно запускать некоторые задачи одновременно. Модульная многопроцессорность предлагает класс Process, а модуль concurrent.futures имеет класс ProcessPoolExecutor. Оба, кажется, используют несколько процессов для выполнения своих задач, но их API разные. Почему я должен использовать один над другим?

Я знаю, что concurrent.futures был добавлен в Python 3, так что я думаю, это лучше?

Ответы

Ответ 1

Мотивы для concurrent.futures описаны в PEP.

В моем практическом опыте concurrent.futures обеспечивает более удобную модель программирования для долгосрочных задач представления и мониторинга ситуаций. Программа, которую я недавно написал с использованием concurrent.futures, включал мониторинг каталога для входящих файлов в течение 2-3-часового окна, перевод каждого файла по мере его поступления на задание, отправка его и т.д. Будущие объекты, возвращенные ProcessPoolExecutor, позволяют отслеживать статус задачи, обеспечивая промежуточные отчеты о состоянии и т.д. Удобным способом.