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编程实现二叉树及七种遍历方法详解
Jun 02 Python
Python 多线程Threading初学教程
Aug 22 Python
Python批量更改文件名的实现方法
Oct 29 Python
python中字符串变二维数组的实例讲解
Apr 03 Python
PyQt5每天必学之创建窗口居中效果
Apr 19 Python
python如何实现代码检查
Jun 28 Python
python实现倒计时小工具
Jul 29 Python
PyCharm第一次安装及使用教程
Jan 08 Python
如何搭建pytorch环境的方法步骤
May 06 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
May 12 Python
解决django 向mysql中写入中文字符出错的问题
May 18 Python
Django admin组件的使用
Oct 24 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防注入安全代码
2008/04/09 PHP
CodeIgniter框架URL路由总结
2014/09/03 PHP
php中switch语句用法详解
2015/08/17 PHP
PHP session 会话处理函数
2016/06/06 PHP
PHP获取数组中指定的一列实例
2017/12/27 PHP
php 利用socket发送GET,POST请求的实例代码
2020/07/04 PHP
JQuery魔力之$("tagName")与selector
2012/03/05 Javascript
E3 tree 1.6在Firefox下显示问题的修复方法
2013/01/30 Javascript
javascript静态页面传值的三种方法分享
2013/11/12 Javascript
Nodejs极简入门教程(一):模块机制
2014/10/25 NodeJs
JS实现超简单的鼠标拖动效果
2015/11/02 Javascript
基于jQuery实现的仿百度首页滑动选项卡效果代码
2015/11/16 Javascript
省市联动效果的简单实现代码(推荐)
2016/06/06 Javascript
AngularJS 简单应用实例
2016/07/28 Javascript
jQuery多个版本和其他js库冲突的解决方法
2016/08/11 Javascript
从0开始学Vue
2016/10/27 Javascript
javascript+css3开发打气球小游戏完整代码
2017/11/28 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
2018/01/16 Javascript
vue router导航守卫(router.beforeEach())的使用详解
2019/04/19 Javascript
使用apifm-wxapi快速开发小程序过程详解
2019/08/05 Javascript
antd多选下拉框一行展示的实现方式
2020/10/31 Javascript
Windows下Python2与Python3两个版本共存的方法详解
2017/02/12 Python
对python 匹配字符串开头和结尾的方法详解
2018/10/27 Python
Python对象与引用的介绍
2019/01/24 Python
Django实现CAS+OAuth2的方法示例
2019/10/30 Python
香港零食网购:上仓胃子
2020/06/08 全球购物
linux面试题参考答案(5)
2016/11/05 面试题
安全生产管理责任书
2014/04/16 职场文书
在校实习生求职信
2014/06/18 职场文书
社区党员群众路线教育实践活动心得体会
2014/11/03 职场文书
2014年物流工作总结
2014/11/25 职场文书
工作失误检讨书
2015/01/26 职场文书
上课睡觉万能检讨书
2015/02/17 职场文书
一文搞懂redux在react中的初步用法
2021/06/09 Javascript
唤醒紫霞仙子,携手再游三界!大话手游X《大话西游》电影合作专属剧情任务
2022/04/03 其他游戏
PyCharm 配置SSH和SFTP连接远程服务器
2022/05/11 Python