最近在尝试通过 multiprocessing 把原来的计算核心改为通过多进程实现的并行程序,但碰到了一个非常奇怪的问题,经过一些时间的排查,终于找到了问题所在。虽然问题本身很简单,但也许也有一定典型性,尤其是对编程新手而言,因此在这里用最简单的模型重现一下。
首先从下面一段非常简单的程序开始:
def main():
x = [1, 2, 3, 4, 5]
foo(x)
print(x)
def foo(x):
bar(x)
# x = bar2(x)
for i in range(len(x)):
x[i] = x[i]**2
def bar(x):
for i in range(len …