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中常用的各种数据库操作模块和连接实例
May 29 Python
Python使用pickle模块储存对象操作示例
Aug 15 Python
对python内置map和six.moves.map的区别详解
Dec 19 Python
Python2与Python3的区别实例总结
Apr 17 Python
11个Python3字典内置方法大全与示例汇总
May 13 Python
python爬取本站电子书信息并入库的实现代码
Jan 20 Python
python3操作注册表的方法(Url protocol)
Feb 05 Python
python中提高pip install速度
Feb 14 Python
一个入门级python爬虫教程详解
Jan 27 Python
只用40行Python代码就能写出pdf转word小工具
May 31 Python
教你使用TensorFlow2识别验证码
Jun 11 Python
Python OpenCV超详细讲解调整大小与图像操作的实现
Apr 02 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
php5 mysql分页实例代码
2008/04/10 PHP
PHP实现抓取Google IP并自动修改hosts文件
2015/02/12 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
2015/02/14 PHP
PHP中实现crontab代码分享
2015/03/26 PHP
JavaScript实现滚动栏效果的方法
2015/04/27 PHP
PHP判断是否是微信打开,浏览器打开的方法
2018/03/14 PHP
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
2008/11/06 Javascript
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
2009/05/21 Javascript
基于jquery实现后台左侧菜单点击上下滑动显示
2013/04/11 Javascript
javascript history对象(历史记录)使用方法(实现浏览器前进后退)
2014/01/07 Javascript
js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
2014/06/02 Javascript
js匿名函数的调用示例(形式多种多样)
2014/08/20 Javascript
jQuery判断多个input file 都不能为空的例子
2015/06/23 Javascript
js实现Select头像选择实时预览代码
2015/08/17 Javascript
js方法数据验证的简单实例
2016/09/17 Javascript
js给table赋值的实例代码
2016/10/13 Javascript
JS实现动画兼容性的transition和transform实例分析
2016/12/13 Javascript
原生js实现鼠标跟随效果
2017/02/28 Javascript
用JavaScript做简易的购物车的代码示例
2017/10/20 Javascript
vue.js+element-ui动态配置菜单的实例
2018/09/07 Javascript
vue中前进刷新、后退缓存用户浏览数据和浏览位置的实例讲解
2018/09/21 Javascript
vue如何解决循环引用组件报错的问题
2018/09/22 Javascript
基于python中pygame模块的Linux下安装过程(详解)
2017/11/09 Python
Python numpy实现数组合并实例(vstack,hstack)
2018/01/09 Python
详解python的ORM中Pony用法
2018/02/09 Python
python与caffe改变通道顺序的方法
2018/08/04 Python
python+splinter实现12306网站刷票并自动购票流程
2018/09/25 Python
在python shell中运行python文件的实现
2019/12/21 Python
使用css3实现的windows8开机加载动画
2014/12/09 HTML / CSS
编程用JAVA解析XML的方式
2013/07/07 面试题
小学毕业感言300字
2014/02/19 职场文书
我的梦想演讲稿
2014/04/30 职场文书
乡镇安全生产目标责任书
2014/07/23 职场文书
2014个人年终工作总结范文
2014/12/15 职场文书
2015年共青团工作总结
2015/05/15 职场文书
Java设计模式中的命令模式
2022/04/28 Java/Android