我正在使用Python编写一个应用程序,需要同时执行一些任务。multiprocessing模块提供了Process类,而concurrent.futures模块则提供了ProcessPoolExecutor类。两者似乎都使用多个进程来执行任务,但它们的API有所不同。请问我应该使用其中的哪一个呢?我知道concurrent.futures是在Python 3中添加的,所以这个模块应该更好?
并发编程的动机在PEP中有介绍。 从我的实际经验来看,concurrent.futures为长时间运行的任务提交和监控提供了更方便的编程模型。我最近编写的一个程序使用concurrent.futures来监视一个目录,在2-3小时的时间窗口内处理每个到达的文件,并将其作为任务进行提交等操作。由ProcessPoolExecutor返回的Future对象可以方便地跟踪任务状态,提供中间状态报告等。