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写asp详细讲解
Dec 16 Python
python使用scrapy解析js示例
Jan 23 Python
记录Django开发心得
Jul 16 Python
Python最长公共子串算法实例
Mar 07 Python
把项目从Python2.x移植到Python3.x的经验总结
Apr 20 Python
解析Python中的异常处理
Apr 28 Python
Python判断文件和文件夹是否存在的方法
May 21 Python
遍历python字典几种方法总结(推荐)
Sep 11 Python
python 读写txt文件 json文件的实现方法
Oct 22 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
Nov 23 Python
python  创建一个保留重复值的列表的补码
Oct 15 Python
python连接PostgreSQL过程解析
Feb 09 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 文件上传系统手记
2009/10/26 PHP
php jquery 实现新闻标签分类与无刷新分页
2009/12/18 PHP
PHP禁止个别IP访问网站
2013/10/30 PHP
ExtJS扩展 垂直tabLayout实现代码
2009/06/21 Javascript
js常用代码段收集
2011/10/28 Javascript
读JavaScript DOM编程艺术笔记
2011/11/15 Javascript
jQuery $.each遍历对象、数组用法实例
2015/04/16 Javascript
简单谈谈node.js 版本控制 nvm和 n
2015/10/15 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
2016/05/24 Javascript
jQuery实现拖拽可编辑模块功能代码
2017/01/12 Javascript
详谈js中window.location.search的用法和作用
2017/02/13 Javascript
socket.io实现在线群聊功能
2017/04/07 Javascript
微信小程序form表单组件示例代码
2018/07/15 Javascript
webpack4 + react 搭建多页面应用示例
2018/08/03 Javascript
微信小程序异步API为Promise简化异步编程的操作方法
2018/08/14 Javascript
JavaScript中toLocaleString()和toString()的区别实例分析
2018/08/14 Javascript
JavaScript两种计时器的实例讲解
2019/01/31 Javascript
jQuery实现的卷帘门滑入滑出效果【案例】
2019/02/18 jQuery
开发中常用的25个JavaScript单行代码(小结)
2019/06/28 Javascript
JavaScript设计模式之策略模式实现原理详解
2020/05/29 Javascript
[40:55]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#4Newbee VS Fnatic
2016/03/03 DOTA
python语言使用技巧分享
2016/05/31 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
2019/08/12 Python
如何在Python3中使用telnetlib模块连接网络设备
2020/09/21 Python
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
波兰数码相机及配件网上商店: Cyfrowe.pl
2017/06/19 全球购物
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
毕业生在校学习的自我评价分享
2013/10/08 职场文书
茶叶店创业计划书范文
2014/01/19 职场文书
提拔干部考察材料
2014/05/26 职场文书
红头文件任命书范本
2014/06/05 职场文书
事业单位个人查摆问题及整改措施
2014/10/28 职场文书
年度考核登记表个人总结
2015/03/06 职场文书
公司周年庆寄语
2019/06/21 职场文书
Go语言带缓冲的通道实现
2021/04/26 Golang