我试图在一个进程中设置一个全局变量,并从另一个进程读取它。 这基本上是我在做什么:从不同的函数调用时,全局变量有不同的值
from multiprocessing import Process
import time
rocket = 0
def func1():
global rocket
while rocket < 10:
rocket += 1
print("Func1: " + str(rocket))
time.sleep(5)
def func2():
while rocket < 10:
print ("Func2: " + str(rocket))
time.sleep(1)
if __name__=='__main__':
p1 = Process(target = func1)
p1.start()
p2 = Process(target = func2)
p2.start()
我觉得这个代码应该做的事情:
- FUNC1 1每五秒钟
- 每一秒FUNC2提高了全局变量“火箭”读取全局变量火箭并打印
- 这两种方法运行parralel直到“火箭” == 10
所以期望输出应该是这样的:
Func1: 1
Func2: 1
Func2: 1
Func2: 1
Func2: 1
Func2: 1
Func1: 2
Func2: 2
Func2: 2
#... and so on
但实际产量是这样:
Func1: 1
Func2: 0
Func2: 0
Func2: 0
Func2: 0
Func2: 0
Func1: 2
Func2: 0
Func2: 0
#... and so on
当从FUNC2 '火箭' 印刷始终保持0
我声明'火箭'作为func1的全局变量as you should
我在这里失踪了什么?
的可能的复制[Python的多处理全局变量的更新不会返回到父(HTTPS: //stackoverflow.com/questions/11055303/python-multiprocessing-global-variable-updates-not-returned-to-parent) –