我花了整整一夜的时间调试代码,最终发现了这个棘手的问题。请查看下面的代码。
from multiprocessing import Pool
def myfunc(x):
return [i for i in range(x)]
pool=Pool()
A=[]
r = pool.map_async(myfunc, (1,2), callback=A.extend)
r.wait()
我以为会得到A=[0,0,1]
,但输出结果是A=[[0],[0,1]]
。对我来说这没有意义,因为如果有A=[]
, A.extend([0])
和 A.extend([0,1])
将给我 A=[0,0,1]
。可能回调函数的工作方式不同。所以我的问题是如何获得A=[0,0,1]
而不是[[0],[0,1]]
?