在Python中,可以使用multiprocessing
模块来实现多进程间的全局变量共享。
默认情况下,每个进程都有自己的独立的内存空间,因此无法通过直接访问全局变量的方式进行共享。但是multiprocessing
模块提供了一些特殊的数据结构,如Value
和Array
,可以在多个进程之间共享数据。
下面是使用Value
和Array
共享全局变量的示例代码:
from multiprocessing import Process, Value, Array
# 定义一个共享的整型变量
shared_var = Value('i', 0)
# 定义一个共享的数组
shared_arr = Array('i', range(5))
def update_shared_var():
global shared_var
shared_var.value = 10
def update_shared_arr():
global shared_arr
for i in range(len(shared_arr)):
shared_arr[i] = i * 2
if __name__ == '__main__':
p1 = Process(target=update_shared_var)
p2 = Process(target=update_shared_arr)
p1.start()
p2.start()
p1.join()
p2.join()
print(shared_var.value)
print(shared_arr[:])
在上述代码中,我们首先使用Value
函数创建了一个共享的整型变量shared_var
,并初始化为0。然后使用Array
函数创建了一个共享的整型数组shared_arr
,并初始化为0, 1, 2, 3, 4。
接着,我们定义了两个函数update_shared_var
和update_shared_arr
,分别用于更新共享的变量和数组。在这两个函数中,我们通过value
属性和切片操作来访问和修改共享变量和数组的值。
最后,我们创建了两个子进程,分别执行update_shared_var
和update_shared_arr
函数,并使用start
方法启动子进程,join
方法等待子进程执行完毕。
最后,我们在主进程中打印共享变量和数组的值。由于这些变量和数组是共享的,它们的值在子进程中被修改后,主进程也能获取到最新的值。