如何从单独的流程访问全局变量

时间:2019-11-07 23:00:18

标签: python multithreading multiprocessing python-multiprocessing

我有两个运行在不同内核上的python进程,它们在运行时需要相互通信。目前,我可以通过多线程来实现这一点;

import threading
x=0
def a():
    global x
    if x==100:
        pass
        #Do something

def b():
    global x
    while 1:
        x=x+1
t1=threading.thread(target=a)
t2=threading.thread(target=b)
t1.start()
t2.start()

但是我想改用multiprocessing模块。有什么办法可以使用多重处理将上面的代码隐藏起来?

1 个答案:

答案 0 :(得分:1)

这是一个与您的原始照片类似的示例,但是使用了多重处理...

NULL

请注意,尽管我确实将from multiprocessing import Process, Value def a(x): while True: if x.value == 10: print('Done. x = ', x.value) break def b(x): for _ in range(10): x.value += 1 x = Value('i', 0) # integer with initial value of 0 t1=Process(target=a, args=(x,)) t2=Process(target=b, args=(x,)) t1.start() t2.start() 作为函数的参数进行了传递,但就像上面一样,如果仅将其用作全局变量,则看起来仍然可以使用。真正的诀窍是使用x对象并使用multiprocessing.Value访问它。