Python分布式ThreadPool

时间:2019-02-12 19:07:08

标签: python multiprocessing threadpool pathos

任何Python ThreadPool软件包(多处理,病历)是否在多个CPU上分配工作线程?如果不是这样,我需要创建一个ProcessPool,然后在每个ProcessPool工作者上创建一个ThreadPool吗?

1 个答案:

答案 0 :(得分:1)

我是pathos的作者。 multiprocessing有一个Pool,它将作业分配到多个cpus。这是一个示例(使用multiprocess,它是multiprocessing的一个分支,具有更好的序列化):

>>> import multiprocess as mp
>>> mp.Pool().map(lambda x:x, range(4))
[0, 1, 2, 3]
>>> 

pathosmultiprocess中使用pathos.pools.ProcessPool。还有pathos.pools.ParallelPool(来自ppft)可以通过分布式计算(不在同一台计算机上)生成作业。

如果您要建立分层池(即ThreadPoolProcessPool),则应使用pathos。参见此处:https://stackoverflow.com/a/28491924/2379433https://stackoverflow.com/a/28613077/2379433https://stackoverflow.com/a/40852258/2379433

但是,您可以使用multiprocessing来做...但是我认为它不再被允许:https://stackoverflow.com/a/8963618/2379433