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采用raw_input读取输入值的方法
Aug 18 Python
分享Python开发中要注意的十个小贴士
Aug 30 Python
numpy.ndarray 交换多维数组(矩阵)的行/列方法
Aug 02 Python
python3.x实现base64加密和解密
Mar 28 Python
python中bs4.BeautifulSoup的基本用法
Jul 27 Python
Django框架创建mysql连接与使用示例
Jul 29 Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
Aug 18 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
Oct 18 Python
python列表删除和多重循环退出原理详解
Mar 26 Python
python实现图像外边界跟踪操作
Jul 13 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
Nov 13 Python
python 三种方法提取pdf中的图片
Feb 07 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 syntax error, unexpected $end 错误的一种原因及解决
2008/10/25 PHP
Apache下禁止php文件被直接访问的解决方案
2013/04/25 PHP
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
2014/12/17 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
bgsound 背景音乐 的一些常用方法及特殊用法小结
2010/05/11 Javascript
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
jquery获取一组checkbox的值(实例代码)
2013/11/04 Javascript
详解JavaScript的流程控制语句
2015/11/30 Javascript
浅谈Angular的$q, defer, promise
2016/12/20 Javascript
JavaScript中值类型和引用类型的区别
2017/02/23 Javascript
iOS + node.js使用Socket.IO框架进行实时通信示例
2017/04/14 Javascript
关于Webpack dev server热加载失败的解决方法
2018/02/22 Javascript
微信web端后退强制刷新功能的实现代码
2018/03/04 Javascript
Vue+element+cookie记住密码功能的简单实现方法
2020/09/20 Javascript
Python的Tornado框架实现图片上传及图片大小修改功能
2016/06/30 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
python实现while循环打印星星的四种形状
2019/11/23 Python
python将音频进行变速的操作方法
2020/04/08 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
2021/01/12 Python
世界上最大的乐器零售商:Guitar Center
2017/11/07 全球购物
美国非常受欢迎的Spa品牌:Bliss必列斯
2018/04/10 全球购物
YSL圣罗兰美妆官方旗舰店:购买YSL口红
2018/04/16 全球购物
.NET初级开发工程师面试题
2014/04/18 面试题
公司业务员岗位职责
2014/03/18 职场文书
销售口号大全
2014/06/11 职场文书
计算机毕业大学生求职信
2014/06/26 职场文书
小学优秀教师先进事迹材料
2014/12/16 职场文书
2015年转正工作总结范文
2015/04/02 职场文书
公司聚餐通知
2015/04/22 职场文书
信访维稳承诺书
2015/05/04 职场文书
朋友离别感言
2015/08/04 职场文书
企业管理不到位检讨书
2019/06/27 职场文书
当你焦虑迷茫时,请读读这6句话
2019/07/24 职场文书
聊一聊python常用的编程模块
2021/05/14 Python
python实现自定义日志的具体方法
2021/05/28 Python