多重处理中的价值解释?(意外输出)



我在这里有这个代码:

from multiprocessing import Value, Process
def func(x):
x.value += 1
print("child process - " + str(x.value))

x = Value("i")
x.value = 0
print("main process - " + str(x.value))
if __name__ == "__main__":
p1 = Process(target=func, args=(x, ))
p1.start()
p1.join()
p1.close()
print("end - " + str(x.value))

现在,我希望这个代码的输出是:

main process - 0
child process - 1
end - 1

但我得到的却是:

main process - 0
main process - 0
end - 0
child process - 1
end - 1

有人能向我解释一下吗?我是多处理的新手,所以我可能做错了什么。问候

我可以确认Joran Beasley提出的解决方案有效。当你把所有东西都放在if __name__ == "__main__"下时,它的工作原理就像一样

最新更新