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

Python 如何从单独的进程访问全局变量,python,multithreading,multiprocessing,python-multiprocessing,Python,Multithreading,Multiprocessing,Python Multiprocessing,我有两个运行在不同内核上的python进程,它们在运行时需要相互通信。目前我可以通过多线程实现这一点 导入线程 x=0 定义a(): 全球x 如果x==100: 通过 #做点什么 def b(): 全球x 而1: x=x+1 t1=线程。线程(目标=a) t2=线程。线程(目标=b) t1.start() t2.start() 但是我想改用多处理模块。有没有办法使用多处理将上述代码转换成某种东西?这里有一个与您的原始代码类似但使用多处理的示例 from multiprocessing impo

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

导入线程
x=0
定义a():
全球x
如果x==100:
通过
#做点什么
def b():
全球x
而1:
x=x+1
t1=线程。线程(目标=a)
t2=线程。线程(目标=b)
t1.start()
t2.start()

但是我想改用
多处理
模块。有没有办法使用多处理将上述代码转换成某种东西?

这里有一个与您的原始代码类似但使用多处理的示例

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
对象并使用
x.Value

访问它。进程不共享内存,因此这比在线程之间共享值要困难得多。
multiprocessing
模块提供了两种方法:,这个例子似乎只使用了一个过程……看看looks Interest@nathancy,我来看看