Python中concurrent.futures相对于multiprocessing的优势是什么?

18
我正在使用Python编写一个应用程序,需要同时执行一些任务。multiprocessing模块提供了Process类,而concurrent.futures模块则提供了ProcessPoolExecutor类。两者似乎都使用多个进程来执行任务,但它们的API有所不同。请问我应该使用其中的哪一个呢?
我知道concurrent.futures是在Python 3中添加的,所以这个模块应该更好?

这是原帖 https://dev59.com/dWAf5IYBdhLWcg3wOQcL 的副本,但不应该被关闭,因为答案中提供了其他地方无法获得的详细信息。 - max
1个回答

14

并发编程的动机在PEP中有介绍。

从我的实际经验来看,concurrent.futures为长时间运行的任务提交和监控提供了更方便的编程模型。我最近编写的一个程序使用concurrent.futures来监视一个目录,在2-3小时的时间窗口内处理每个到达的文件,并将其作为任务进行提交等操作。由ProcessPoolExecutor返回的Future对象可以方便地跟踪任务状态,提供中间状态报告等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接