我想从多处理中的每个作业中收集结果。 这是玩具代码:
from multiprocessing.pool import Pool
from random import randint
def main():
num = 0
def cb(arg):
num += arg
p = Pool(5)
pp = []
for i in range(10):
pp.append(p.apply_async(randint,(1,10),callback=cb))
for i in range(10):
pp[i].wait()
return num
if __name__ == '__main__':
print(main())
对于每个作业,它将生成一个1到10的随机整数,我使用变量num
对其进行汇总。
此代码将引发错误:
UnboundLocalError: local variable 'num' referenced before assignment
我知道一种解决方法是使num
成为全局变量。但是我的问题是:为什么我不能使用这种关闭功能来总结作业的结果?