Python multiprocessing.Manager介绍和实例(进程间共享数据)


Posted in Python onNovember 21, 2014

Python中进程间共享数据,处理基本的queue,pipe和value+array外,还提供了更高层次的封装。使用multiprocessing.Manager可以简单地使用这些高级接口。

Manager()返回的manager对象控制了一个server进程,此进程包含的python对象可以被其他的进程通过proxies来访问。从而达到多进程间数据通信且安全。

Manager支持的类型有list,dict,Namespace,Lock,RLock,Semaphore,BoundedSemaphore,Condition,Event,Queue,Value和Array。

1) Manager的dict,list使用

import multiprocessing

import time
def worker(d, key, value):

    d[key] = value
if __name__ == '__main__':

    mgr = multiprocessing.Manager()

    d = mgr.dict()

    jobs = [ multiprocessing.Process(target=worker, args=(d, i, i*2))

             for i in range(10) 

             ]

    for j in jobs:

        j.start()

    for j in jobs:

        j.join()

    print ('Results:' )

    for key, value in enumerate(dict(d)):

        print("%s=%s" % (key, value))

        

# the output is :

# Results:

# 0=0

# 1=1

# 2=2

# 3=3

# 4=4

# 5=5

# 6=6

# 7=7

# 8=8

# 9=9

上面为manager.dict的使用实例。

2)namespace对象没有公共的方法,但是有可写的属性。

然而当使用manager返回的namespace的proxy的时候,_属性值属于proxy,跟原来的namespace没有关系。

>>> manager = multiprocessing.Manager()

>>> Global = manager.Namespace()

>>> Global.x = 10

>>> Global.y = 'hello'

>>> Global._z = 12.3    # this is an attribute of the proxy

>>> print(Global)

Namespace(x=10, y='hello')
Python 相关文章推荐
Python中str.format()详解
Mar 12 Python
Python字符串处理实现单词反转
Jun 14 Python
Python操作word常见方法示例【win32com与docx模块】
Jul 17 Python
Django如何自定义分页
Sep 25 Python
Python 实现取矩阵的部分列,保存为一个新的矩阵方法
Nov 14 Python
解决Python selenium get页面很慢时的问题
Jan 30 Python
python 调用钉钉机器人的方法
Feb 20 Python
python使用PyQt5的简单方法
Feb 27 Python
解决python文件双击运行秒退的问题
Jun 24 Python
Python如何调用JS文件中的函数
Aug 16 Python
如何理解Python中的变量
Jun 01 Python
PyQt5结合QtDesigner实现文本框读写操作
Jun 11 Python
Python pickle类库介绍(对象序列化和反序列化)
Nov 21 #Python
Python和perl实现批量对目录下电子书文件重命名的代码分享
Nov 21 #Python
Python实现的下载8000首儿歌的代码分享
Nov 21 #Python
Python常用模块介绍
Nov 21 #Python
Python使用py2exe打包程序介绍
Nov 20 #Python
Python实现的tab文件操作类分享
Nov 20 #Python
Python实现的ini文件操作类分享
Nov 20 #Python
You might like
详解PHP错误日志的获取方法
2015/07/20 PHP
PHP使用递归算法无限遍历数组示例
2017/01/13 PHP
php简单构造json多维数组的方法示例
2017/06/08 PHP
Mac下快速搭建PHP开发环境步骤详解
2019/05/05 PHP
JavaScript的parseInt 进制问题
2009/05/07 Javascript
javascript学习笔记(五)原型和原型链详解
2014/10/08 Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
2017/04/18 Javascript
Javascript实现数组中的元素上下移动
2017/04/28 Javascript
详解vue.js的devtools安装
2017/05/26 Javascript
基于jquery实现多选下拉列表
2017/08/02 jQuery
详解Angular中通过$location获取地址栏的参数
2018/08/02 Javascript
layui按条件隐藏表格列的实例
2019/09/19 Javascript
node解析修改nginx配置文件操作实例分析
2019/11/06 Javascript
学前端,css与javascript重难点浅析
2020/06/11 Javascript
JS实现简单打字测试
2020/06/24 Javascript
解决vue项目打包上服务器显示404错误,本地没出错的问题
2020/11/03 Javascript
[39:52]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第一场
2018/04/04 DOTA
浅谈python中对于json写入txt文件的编码问题
2018/06/07 Python
详解Django+Uwsgi+Nginx的生产环境部署
2018/06/25 Python
对python3新增的byte类型详解
2018/12/04 Python
在PyCharm中遇到pip安装 失败问题及解决方案(pip失效时的解决方案)
2020/03/10 Python
给Django Admin添加验证码和多次登录尝试限制的实现
2020/07/26 Python
python开发一款翻译工具
2020/10/10 Python
html5设计原理(推荐收藏)
2014/05/17 HTML / CSS
移动HTML5前端框架—MUI的使用
2017/12/18 HTML / CSS
Made in Design德国:设计师家具、灯具和装饰
2019/10/31 全球购物
PHP面试题及答案二
2015/05/23 面试题
计算 s=(x*y)1/2,用两个宏定义来实现
2016/08/11 面试题
语文教育专业推荐信范文
2013/11/25 职场文书
产品包装策划方案
2014/05/18 职场文书
我的中国梦演讲稿600字
2014/08/19 职场文书
紧急迫降观后感
2015/06/15 职场文书
初中军训感言
2015/08/01 职场文书
公司车辆管理制度
2015/08/04 职场文书
nginx限制并发连接请求数的方法
2021/04/01 Servers
解决redis sentinel 频繁主备切换的问题
2021/04/12 Redis