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 相关文章推荐
零基础写python爬虫之抓取百度贴吧代码分享
Nov 06 Python
Python pickle模块用法实例分析
May 27 Python
pyspark 读取csv文件创建DataFrame的两种方法
Jun 07 Python
浅谈Pycharm中的Python Console与Terminal
Jan 17 Python
我们为什么要减少Python中循环的使用
Jul 10 Python
python实现字符串完美拆分split()的方法
Jul 16 Python
Python3.7 读取 mp3 音频文件生成波形图效果
Nov 05 Python
用python拟合等角螺线的实现示例
Dec 27 Python
Opencv+Python识别PCB板图片的步骤
Jan 07 Python
python中if嵌套命令实例讲解
Feb 25 Python
python openpyxl模块的使用详解
Feb 25 Python
python使用shell脚本创建kafka连接器
Apr 29 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安装攻略:常见问题解答(一)
2006/10/09 PHP
网页上facebook分享功能具体实现
2014/01/26 PHP
php实现两表合并成新表并且有序排列的方法
2014/12/05 PHP
PHP也能干大事之PHP中的编码解码详解
2015/04/20 PHP
php实现比较两个字符串日期大小的方法
2015/05/12 PHP
ThinkPHP5.1表单令牌Token失效问题的解决
2019/03/22 PHP
JS对文本框值的判断示例
2014/03/10 Javascript
JS特效实现图片自动播放并可控的效果
2015/07/31 Javascript
JavaScript基础篇(6)之函数表达式闭包
2015/12/11 Javascript
JQuery的Pager分页器实现代码
2016/05/03 Javascript
Javascript删除指定元素节点的方法
2016/06/21 Javascript
AngularJS模块详解及示例代码
2016/08/17 Javascript
Web打印解决方案之普通报表打印功能
2016/08/29 Javascript
JS判断form内所有表单是否为空的简单实例
2016/09/09 Javascript
基于vue2框架的机器人自动回复mini-project实例代码
2017/06/13 Javascript
js函数柯里化的方法和作用实例分析
2020/04/11 Javascript
JS call()及apply()方法使用实例汇总
2020/07/11 Javascript
[01:05:52]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第一场 2月2日
2021/03/11 DOTA
python中函数传参详解
2016/07/03 Python
python使用Paramiko模块实现远程文件拷贝
2019/04/30 Python
在Python中使用turtle绘制多个同心圆示例
2019/11/23 Python
Python基于Dlib的人脸识别系统的实现
2020/02/26 Python
python实现交并比IOU教程
2020/04/16 Python
python 5个实用的技巧
2020/09/27 Python
Python图像读写方法对比
2020/11/16 Python
python 如何停止一个死循环的线程
2020/11/24 Python
Html5上传图片 移动端、PC端通用代码
2016/06/08 HTML / CSS
英国第一摩托车和摩托车越野配件商店:GhostBikes
2019/03/10 全球购物
体育教育个人自荐信范文
2013/12/01 职场文书
银行职业规划书范文
2013/12/28 职场文书
《黄山奇石》教学反思
2014/04/19 职场文书
人事文员岗位职责
2015/02/04 职场文书
幼儿园小班教师个人工作总结
2015/02/06 职场文书
聘任证明怎么写
2015/03/02 职场文书
Python将CSV文件转化为HTML文件的操作方法
2021/06/30 Python
pandas求平均数和中位数的方法实例
2021/08/04 Python