python 多进程共享数据 使用manager
时间: 2023-08-27 16:07:06 浏览: 143
python 多进程共享全局变量之Manager()详解
5星 · 资源好评率100%
在 Python 中,如果多个进程需要共享数据,我们可以使用 multiprocessing 模块提供的 Manager 类来实现。
Manager 类提供了一种将 Python 对象存储在共享内存中的方法,这使得多个进程可以访问和修改同一个对象。Manager 类提供了一个字典和一个列表的实现,分别是 multiprocessing.Manager().dict() 和 multiprocessing.Manager().list()。
下面是一个示例代码,展示了如何使用 Manager 类来实现多进程共享数据:
```python
import multiprocessing
def worker(d, l):
d[1] = 'a'
d[2] = 'b'
l.append(1)
print('worker:', d, l)
if __name__ == '__main__':
manager = multiprocessing.Manager()
d = manager.dict()
l = manager.list(range(5))
p = multiprocessing.Process(target=worker, args=(d, l))
p.start()
p.join()
print('main:', d, l)
```
在这个示例中,我们创建了一个 Manager 对象,然后使用它创建了一个字典和一个列表。我们将这些对象传递给工作进程,工作进程向这些对象中添加了一些数据。最后,主进程打印这些对象的内容。
运行这个代码,输出应该类似于下面这样:
```
worker: {1: 'a', 2: 'b'} [0, 1]
main: {1: 'a', 2: 'b'} [0, 1]
```
可以看到,工作进程向字典和列表中添加了一些数据,主进程也能够看到这些修改。这就是使用 Manager 类来实现多进程共享数据的方法。
阅读全文