我在这里有这个代码:
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__"
下时,它的工作原理就像一样