我想让我的多重处理结果列出2,我该怎么做。我在下面尝试过,但只得到最后一个列表。
def multiply(x, y):
return x * x, x * y
#use wrap
def multiply_wrapper(args):
return multiply(*args)
#use wrap
if __name__ == "__main__":
list_x = []
list_y = []
p = Pool(4)
values = [(x, y) for x in range(4) for y in range(4)]
results = p.map(multiply_wrapper, values)
list_x.append(results[0][0])
list_y.append(results[0][1])
print(list_x)
print(list_y)
我尝试了一些小的更改就尝试了您的代码,results
看起来还可以。
您是否可能期望多处理根据哪个工作人员处理了数据块而使数据分离?幸运的是,它为我们加入了数据。
以下内容是由文档和您的原始问题启发而来的。另外,不要忘记释放资源,因为垃圾收集器不会为您执行此操作。
from multiprocessing.pool import Pool
import pprint
def multiply(x, y):
return x * x, x * y
#use wrap
def multiply_wrapper(args):
return multiply(*args)
#use wrap
if __name__ == "__main__":
p = Pool(4)
values = [(x, y) for x in range(4) for y in range(4)]
results = p.map(multiply_wrapper, values)
p.close()
p.join()
pprint.pprint(results)
输出:
[(0, 0),
(0, 0),
(0, 0),
(0, 0),
(1, 0),
(1, 1),
(1, 2),
(1, 3),
(4, 0),
(4, 2),
(4, 4),
(4, 6),
(9, 0),
(9, 3),
(9, 6),
(9, 9)]
回复评论:
要从的输出中获取2个列表Pool.map
,我们可以将结果解压缩。
if __name__ == "__main__":
p = Pool(4)
values = [(x, y) for x in range(4) for y in range(4)]
results = p.map(multiply_wrapper, values)
p.close()
p.join()
list_x = [x[0] for x in results]
list_y = [x[1] for x in results]
pprint.pprint(list_x)
pprint.pprint(list_y)
输出:
[0, 0, 0, 0, 1, 1, 1, 1, 4, 4, 4, 4, 9, 9, 9, 9]
[0, 0, 0, 0, 0, 1, 2, 3, 0, 2, 4, 6, 0, 3, 6, 9]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句