python 多进程修改全局变量
时间: 2023-07-06 15:17:16 浏览: 57
在 Python 中,多进程之间是不共享内存的,所以无法直接修改全局变量。不过,我们可以通过共享内存来实现多进程共享全局变量的目的。Python 中提供了两种方式来实现共享内存:
1. 使用 multiprocessing.Value 和 multiprocessing.Array 类。这两个类分别可以创建共享变量和共享数组,可以在多个进程之间安全地共享。
2. 使用 multiprocessing.Manager 类。这个类可以创建一个共享的命名空间,其中包含了多个共享变量、共享列表、共享字典等。
下面是一个使用 multiprocessing.Value 和 multiprocessing.Process 实现多进程修改全局变量的示例代码:
```
import multiprocessing
# 定义共享变量
global_var = multiprocessing.Value('i', 0)
def update_global_var():
global global_var
# 多进程修改共享变量
global_var.value += 1
if __name__ == '__main__':
# 创建多个进程
processes = [multiprocessing.Process(target=update_global_var) for i in range(5)]
# 启动进程
for p in processes:
p.start()
# 等待进程结束
for p in processes:
p.join()
# 输出结果
print(global_var.value)
```
这个例子中,我们先定义了一个共享变量 global_var,然后创建了 5 个进程,每个进程都会执行 update_global_var 函数,修改共享变量 global_var 的值。最后输出结果,可以看到共享变量 global_var 的值被 5 个进程分别加了 1,最终的结果是 5。