请看下面的例子:
import multiprocessing as mp
def job(l):
l.append(1)
return l
if __name__ == "__main__":
pool = mp.Pool(1)
my_list = []
out = pool.map(job, [my_list for i in range(5)])
pool.close()
pool.join()
print(out)
调用pool.map时,我预期参数会被pickle化并在执行作业时进行反序列化(因此每次重新创建)。然而,观察到的输出是
[[1, 1], [1, 1], [1, 1], [1, 1], [1]]
能有人解释一下发生了什么吗?我期望输出的结果是一个长度为5的列表[1],或者是由[1]、[1, 1]、...、[1, 1, 1, 1, 1]组成的列表,但现实情况却并非如此。