优选主流主机商
任何主机均需规范使用

python多进程共享全局变量如何实现

在Python中,可以使用multiprocessing模块来实现多进程间的全局变量共享。

默认情况下,每个进程都有自己的独立的内存空间,因此无法通过直接访问全局变量的方式进行共享。但是multiprocessing模块提供了一些特殊的数据结构,如ValueArray,可以在多个进程之间共享数据。

下面是使用ValueArray共享全局变量的示例代码:

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_varupdate_shared_arr,分别用于更新共享的变量和数组。在这两个函数中,我们通过value属性和切片操作来访问和修改共享变量和数组的值。

最后,我们创建了两个子进程,分别执行update_shared_varupdate_shared_arr函数,并使用start方法启动子进程,join方法等待子进程执行完毕。

最后,我们在主进程中打印共享变量和数组的值。由于这些变量和数组是共享的,它们的值在子进程中被修改后,主进程也能获取到最新的值。

未经允许不得转载:搬瓦工中文网 » python多进程共享全局变量如何实现