任何Python ThreadPool软件包(多处理,病历)是否在多个CPU上分配工作线程?如果不是这样,我需要创建一个ProcessPool,然后在每个ProcessPool工作者上创建一个ThreadPool吗?
答案 0 :(得分:1)
我是pathos
的作者。 multiprocessing
有一个Pool
,它将作业分配到多个cpus。这是一个示例(使用multiprocess
,它是multiprocessing
的一个分支,具有更好的序列化):
>>> import multiprocess as mp
>>> mp.Pool().map(lambda x:x, range(4))
[0, 1, 2, 3]
>>>
pathos
在multiprocess
中使用pathos.pools.ProcessPool
。还有pathos.pools.ParallelPool
(来自ppft
)可以通过分布式计算(不在同一台计算机上)生成作业。
如果您要建立分层池(即ThreadPool
和ProcessPool
),则应使用pathos
。参见此处:https://stackoverflow.com/a/28491924/2379433和https://stackoverflow.com/a/28613077/2379433和https://stackoverflow.com/a/40852258/2379433。
但是,您可以使用multiprocessing
来做...但是我认为它不再被允许:https://stackoverflow.com/a/8963618/2379433