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和C++求解方法
Aug 20 Python
用Python将动态GIF图片倒放播放的方法
Nov 02 Python
对python中的logger模块全面讲解
Apr 28 Python
python调用百度REST API实现语音识别
Aug 30 Python
python实现逐个读取txt字符并修改
Dec 24 Python
python 产生token及token验证的方法
Dec 26 Python
Python变量类型知识点总结
Feb 18 Python
django页面跳转问题及注意事项
Jul 18 Python
使用Python制作新型冠状病毒实时疫情图
Jan 28 Python
Python原始套接字编程实例解析
Jan 29 Python
Python关于__name__属性的含义和作用详解
Feb 19 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
Feb 28 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与SQL注入攻击[一]
2007/04/17 PHP
用PHP来计算某个目录大小的方法
2014/04/01 PHP
PHP implode()函数用法讲解
2019/03/08 PHP
php屏蔽错误及提示的方法
2020/05/10 PHP
简单js代码实现selece二级联动(推荐)
2014/02/18 Javascript
JavaScript中使用arguments获得函数传参个数实例
2014/08/27 Javascript
js中confirm实现执行操作前弹出确认框的方法
2014/11/01 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
2015/04/17 Javascript
JS实现可点击展开与关闭的左侧广告代码
2015/09/02 Javascript
使用jquery动态加载Js文件和Css文件
2015/10/24 Javascript
jQuery实现立体式数字滚动条增加效果
2016/12/21 Javascript
jQuery中clone()函数实现表单中增加和减少输入项
2017/05/13 jQuery
基于js原生和ajax的get和post方法以及jsonp的原生写法实例
2017/10/16 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
vue组件通信传值操作示例
2019/01/08 Javascript
javascript之分片上传,断点续传的实际项目实现详解
2019/09/05 Javascript
Layui弹框中数据表格中可双击选择一条数据的实现
2020/05/06 Javascript
详谈Object.defineProperty 及实现数据双向绑定
2020/07/18 Javascript
浅谈numpy中linspace的用法 (等差数列创建函数)
2017/06/07 Python
Python中使用遍历在列表中添加字典遇到的坑
2019/02/27 Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
2019/07/04 Python
pandas对dataFrame中某一个列的数据进行处理的方法
2019/07/08 Python
Python如何把十进制数转换成ip地址
2020/05/25 Python
python如何编写win程序
2020/06/08 Python
使用OpenCV去除面积较小的连通域
2020/07/05 Python
python从ftp获取文件并下载到本地
2020/12/05 Python
深入浅析HTML5中的SVG
2015/11/27 HTML / CSS
HTML5图片层叠的实现示例
2020/07/07 HTML / CSS
以色列的身体护理及家居香薰品牌:Sabon NYC
2018/02/23 全球购物
WoolOvers澳洲官方网站:英国针织服装公司
2018/05/13 全球购物
如何估计一张表的大小(假设该表中有1万条数据)
2016/03/27 面试题
股东合作协议书范本
2014/04/14 职场文书
运动员入场词
2015/07/18 职场文书
2015年幼师个人工作总结
2015/10/15 职场文书
《最后一头战象》读后感:动物也有感情
2020/01/02 职场文书
k8s部署redis cluster集群的实现
2021/06/24 Redis