我有一个函数会随着时间增加数字。这是给一个进程;但在进程运行时它不会增加。我希望全局变量的值定期增加。但是,我没有看到增量发生。
这是我尝试过的:
from multiprocessing import Process
from time import sleep
x = 0;
def increment():
global x;
while(1):
x +=1
sleep(1)
process_1 = Process(target=increment)
process_1.start()
for i in range(0,10):
print(x);
sleep(2)
我期待它会打印出来
1
3
5
7 ...
但是,它仍然是 0。
我在这里缺少什么?
请注意,每个进程都是一个单独的
object()
。您应该在进程中传递变量,以本地保存在内存中。
from multiprocessing import Process, Value
from time import sleep
def increment(x):
while True:
x.value += 1
sleep(1)
if __name__ == '__main__':
x = Value('i', 1)
process_1 = Process(target=increment, args=(x,))
process_1.start()
for i in range(10):
print(f'{i}: {x.value}')
sleep(2)
0: 1
1: 3
2: 5
3: 7
4: 9
5: 11
6: 13
7: 15
8: 17
9: 19