mgi*_*son 28

正如文档中所述,concurrent.futures.ProcessPoolExecutor是一个包装器multiprocessing.Pool.因此,应用的相同限制multiprocessing(例如,对象需要可拾取).

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

  • @ospider - 关心详细说明?据我所知,问题是"ProcessPoolExecutor"和"multiprocessing.Pool"之间的区别.答案(正如我所看到的)是它们具有基本相同的功能(后者是前者的包装器,它提供了一个不同的接口,用于创建一个接口,通过"简单"切换也可以与线程一起使用Executor类). (7认同)