python 多进程共享全局变量之Manager()详解


Posted in Python onAugust 15, 2019

Manager支持的类型有

list,dict,Namespace,Lock,RLock,Semaphore,BoundedSemaphore,Condition,Event,Queue,Value和Array。

但当使用Manager处理list、dict等可变数据类型时,需要注意一个陷阱,即Manager对象无法监测到它引用的可变对象值的修改,需要通过触发__setitem__方法来让它获得通知。

而触发__setitem__方法比较直接的办法就是增加一个中间变量,如同在C语言中交换两个变量的值一样:

int a=1;int b=2;int tmp=a;a=b;b=tmp;

python例子:

from multiprocessing import Manager,Process
def test_manager():
m[0]['id'] = 2
m = Manager().list()
m.append({"id":1})
p = Process(target=test_manager)
p.start()
p.join()
print m[0]

执行结果:

{"id":1}

并未改变

修改test_manager()

def test_manager():
 tmp = m[0]
 tmp{"id"} = 2
 m[0] = tmp

此时执行结果即为:

{"id":2}

另外,对于Process需注意对象要可被序列化pickle

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python3中常用的处理时间和实现定时任务的方法的介绍
Apr 07 Python
Python实现新浪博客备份的方法
Apr 27 Python
pyside+pyqt实现鼠标右键菜单功能
Dec 08 Python
Django之提交表单与前后端交互的方法
Jul 19 Python
python实现电子书翻页小程序
Jul 23 Python
Python学习笔记之列表和成员运算符及列表相关方法详解
Aug 22 Python
Python求正态分布曲线下面积实例
Nov 20 Python
详解python中的闭包
Sep 07 Python
python 对一幅灰度图像进行直方图均衡化
Oct 27 Python
Pandas 稀疏数据结构的实现
Jul 25 Python
Python pandas求方差和标准差的方法实例
Aug 04 Python
Python学习之包与模块详解
Mar 19 Python
使用Python调取任意数字资产钱包余额功能
Aug 15 #Python
centos7之Python3.74安装教程
Aug 15 #Python
详解python列表(list)的使用技巧及高级操作
Aug 15 #Python
django项目中使用手机号登录的实例代码
Aug 15 #Python
python基于pdfminer库提取pdf文字代码实例
Aug 15 #Python
python模拟键盘输入 切换键盘布局过程解析
Aug 15 #Python
django项目登录中使用图片验证码的实现方法
Aug 15 #Python
You might like
php站内搜索并高亮显示关键字的实现代码
2011/12/29 PHP
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
Laravel框架中实现使用阿里云ACE缓存服务
2015/02/10 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
2016/01/09 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
浅谈JavaScript编程语言的编码规范
2011/10/21 Javascript
利用JQuery和JS实现奇偶行背景颜色自定义效果
2012/11/19 Javascript
JS实现匀速运动的代码实例
2013/11/29 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
2014/01/10 Javascript
JavaScript日期类型的一些用法介绍
2015/03/02 Javascript
jQuery实现跨域iframe接口方法调用
2015/03/14 Javascript
js实现同一页面多个运动效果的方法
2015/04/10 Javascript
基于jquery实现下拉框美化特效
2016/02/02 Javascript
BootStrap的JS插件之轮播效果案例详解
2016/05/16 Javascript
Node.js中使用jQuery的做法
2016/08/17 Javascript
微信小程序 数组(增,删,改,查)等操作实例详解
2017/01/05 Javascript
bootstrap fileinput 插件使用项目总结(经验)
2017/02/22 Javascript
jQuery使用unlock.js插件实现滑动解锁
2017/04/04 jQuery
vue中实现上传文件给后台实例详解
2019/08/22 Javascript
npx create-react-app xxx创建项目报错的解决办法
2020/02/17 Javascript
如何在 Vue 中使用 JSX
2021/02/14 Vue.js
python实现的DES加密算法和3DES加密算法实例
2015/06/03 Python
为Python的Tornado框架配置使用Jinja2模板引擎的方法
2016/06/30 Python
python实现本地图片转存并重命名的示例代码
2018/10/27 Python
python multiprocessing模块用法及原理介绍
2019/08/20 Python
python数值基础知识浅析
2019/11/19 Python
UNOde50美国官网:西班牙珠宝品牌
2020/08/15 全球购物
财务会计专业求职信范文
2013/12/31 职场文书
双语教学实施方案
2014/03/23 职场文书
自我检讨书怎么写
2015/05/07 职场文书
社区禁毒宣传活动总结
2015/05/07 职场文书
中国合伙人观后感
2015/06/02 职场文书
人生遥控器观后感
2015/06/11 职场文书
CSS filter 有什么神奇用途
2021/05/25 HTML / CSS
一文搞懂redux在react中的初步用法
2021/06/09 Javascript