17

我正在用 Python 编写一个应用程序,我需要同时运行一些任务。模块 multiprocessing 提供类 Process 并且 concurrent.futures 模块具有类 ProcessPoolExecutor。两者似乎都使用多个进程来执行它们的任务,但它们的 API 是不同的。为什么我应该使用一个而不是另一个?

我知道 concurrent.futures 是在 Python 3 中添加的,所以我想它会更好吗?

4

1 回答 1

13

concurrent.futures 的动机包含在PEP中。

在我的实践经验中,concurrent.futures 为长时间运行的任务提交和监控情况提供了更方便的编程模型。我最近使用 concurrent.futures 编写的一个程序涉及在 2-3 小时的窗口内监视目录中的传入文件,在每个文件到达任务时将其翻译,提交等等。ProcessPoolExecutor 返回的未来对象允许以方便的方式跟踪任务状态、提供中间状态报告等。

于 2012-07-23T18:23:12.230 回答