我正在用Python编写应用程序,我需要同时运行一些任务。模块多处理提供类Process,concurrent.futures模块提供ProcessPoolExecutor类。两者似乎都使用多个进程来执行他们的任务,但他们的API却不同。为什么我要用一个而不是另一个?
我知道在Python 3中添加了concurrent.futures,所以我猜它会更好吗?
答案 0 :(得分:13)
PEP中包含了concurrent.futures的动机。
根据我的实际经验,concurrent.futures为长期运行的任务提交和监控情况提供了更方便的编程模型。我最近使用concurrent.futures编写的程序涉及在2-3小时窗口内监视传入文件的目录,在文件到达任务时对其进行翻译,提交等等。 ProcessPoolExecutor返回的未来对象允许以方便的方式跟踪任务状态,提供中间状态报告等。