concurrent.futures.ProcessPoolExecutor vs multiprocessing.pool.Pool

时间:2016-07-11 16:04:04

标签: python python-3.x concurrency parallel-processing multiprocessing

请向我解释这两个班级之间有什么区别

我注意到Python 2中存在multiprocessing模块但功能上是什么?

1 个答案:

答案 0 :(得分:16)

如文档中所述,vice.commultiprocessing.Pool的包装器。因此,适用multiprocessing的相同限制(例如,对象需要可选择)。

但是,concurrent.futures旨在提供一个抽象接口,可用于以方便的方式管理不同类型的异步任务。例如将异步策略从使用进程池更改为使用线程通常就像更改一行或两行代码一样简单(而不是需要自己编写代码)。抽象中的另一个(相关的)好处是concurrent.futures提供了一个要记住的API - 您可以选择最适合该任务的Executor。是否正在使用您的进程IO绑定?太棒了,请使用ThreadPoolExecutor。由于Global Interpreter Lock(GIL),您是否会遇到加速问题的麻烦?没问题,请使用ProcessPoolExecutor