python - 使用 Pool() 进行 Python 多处理
问题描述
我似乎无法让它工作,我正在尝试使用多处理来为列表的所有组合调用我的评估函数;
import itertools
from multiprocessing import Pool
def combinations(inputs):
pool = Pool()
combi = list(itertools.combinations(inputs, 5))
outputs = pool.map(evaluate, combi)
return outputs
def evaluate(input):
<do stuff>
return output
a = [[2,2],[4,3],[5,1],[6,3],[7,2],[12,4],[12,2]]
b = combinations(a)
如果我将其放入 for 循环并一次处理每个循环,则此方法有效。这只是 pool.map() 以及如何传递我无法弄清楚的每个单独的列表项。
解决方案
以下是 21 种组合的原始列表:
import itertools
from multiprocessing import Pool
import os
def combinations(inputs):
combi = list(itertools.combinations(inputs, 5))
pool = Pool(len(combi))
outputs = pool.map(evaluate, combi)
return outputs
def evaluate(input):
return ['processed by {0}'.format(os.getpid()), input]
a = [[2,2],[4,3],[5,1],[6,3],[7,2],[12,4],[12,2]]
b = combinations(a)
for i in b:
print(i)
输出:
['processed by 5185', ([2, 2], [4, 3], [5, 1], [6, 3], [7, 2])]
['processed by 5186', ([2, 2], [4, 3], [5, 1], [6, 3], [12, 4])]
['processed by 5187', ([2, 2], [4, 3], [5, 1], [6, 3], [12, 2])]
['processed by 5188', ([2, 2], [4, 3], [5, 1], [7, 2], [12, 4])]
['processed by 5189', ([2, 2], [4, 3], [5, 1], [7, 2], [12, 2])]
['processed by 5190', ([2, 2], [4, 3], [5, 1], [12, 4], [12, 2])]
['processed by 5191', ([2, 2], [4, 3], [6, 3], [7, 2], [12, 4])]
['processed by 5192', ([2, 2], [4, 3], [6, 3], [7, 2], [12, 2])]
['processed by 5193', ([2, 2], [4, 3], [6, 3], [12, 4], [12, 2])]
['processed by 5194', ([2, 2], [4, 3], [7, 2], [12, 4], [12, 2])]
['processed by 5195', ([2, 2], [5, 1], [6, 3], [7, 2], [12, 4])]
['processed by 5196', ([2, 2], [5, 1], [6, 3], [7, 2], [12, 2])]
['processed by 5197', ([2, 2], [5, 1], [6, 3], [12, 4], [12, 2])]
['processed by 5198', ([2, 2], [5, 1], [7, 2], [12, 4], [12, 2])]
['processed by 5199', ([2, 2], [6, 3], [7, 2], [12, 4], [12, 2])]
['processed by 5200', ([4, 3], [5, 1], [6, 3], [7, 2], [12, 4])]
['processed by 5201', ([4, 3], [5, 1], [6, 3], [7, 2], [12, 2])]
['processed by 5202', ([4, 3], [5, 1], [6, 3], [12, 4], [12, 2])]
['processed by 5203', ([4, 3], [5, 1], [7, 2], [12, 4], [12, 2])]
['processed by 5204', ([4, 3], [6, 3], [7, 2], [12, 4], [12, 2])]
['processed by 5205', ([5, 1], [6, 3], [7, 2], [12, 4], [12, 2])]
推荐阅读
- javascript - 在 Bootstrap Modal Close 上,清除 Datatable 的所有行
- javascript - ngx-editor 链接重定向到与 Angular 项目 url 结合的 url
- python-3.x - Keras 中的 model.evaluate 如何工作以及如何手动重新创建它?
- reactjs - 在另一个组件中输入,目标错误
- typescript - 我可以在不丢失类型检查的情况下迭代属性列表吗?
- macos - lldb 在 EXC_SYSCALL 上影响 rcx 值
- ios - CollectionView 不会停止抱怨未定义的行为
- c# - 另一个用户控件内的用户控件中的数据绑定
- sql-server - SQL Management Studio 中的数据库在服务器 A 中不可用,但在具有相同用户的服务器 B 中我可以看到所有数据库
- python - 如何在python的张量流中将成本函数定义为均方根对数误差