Python多进程如何共享一个变量
时间: 2024-09-30 08:03:39 浏览: 35
python 多进程共享全局变量之Manager()详解
5星 · 资源好评率100%
在Python中,由于全局解释器锁(GIL)的存在,多线程无法直接实现CPU间的并行计算,而多进程可以利用每个进程独立的内存空间来避免数据竞争。如果你想要让多个进程共享一个变量,你需要使用专门的同步工具,如`multiprocessing`模块中的`Manager`对象。
`Manager`提供了一个可以跨进程共享的数据结构,比如`Value`, `Array`, 或者`dict`等。这里是一个例子:
```python
from multiprocessing import Manager
# 创建一个Manager实例
manager = Manager()
# 共享变量
shared_var = manager.list([0]) # 或者其他类型,如 shared_int = manager.Value('i', 0)
def worker():
global shared_var # 需要在函数内部声明为global,因为它是通过Manager创建的
shared_var.append(1) # 对共享变量的操作
if __name__ == '__main__':
processes = [Process(target=worker) for _ in range(5)]
for p in processes:
p.start()
for p in processes:
p.join()
print(shared_var) # 输出: [0, 1, 1, 1, 1]
```
阅读全文