从流程中获取定期更新

问题描述 投票:0回答:1

我有一个函数会随着时间增加数字。这是给一个进程;但在进程运行时它不会增加。我希望全局变量的值定期增加。但是,我没有看到增量发生。

这是我尝试过的

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。

我在这里缺少什么?

python multithreading process
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.