Каковы преимущества concurrent.futures по сравнению с многопроцессорностью в Python?

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

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


person Daniel Jonsson    schedule 23.07.2012    source источник
comment
Дубликат stackoverflow.com/questions/24896193/, но не следует закрывать, поскольку ответ содержит детали, недоступные в другом месте.   -  person max    schedule 06.05.2017


Ответы (1)


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

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

person iruvar    schedule 23.07.2012