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 encode和decode的妙用
Sep 02 Python
详解Python的Django框架中的模版相关知识
Jul 15 Python
Python numpy生成矩阵、串联矩阵代码分享
Dec 04 Python
Python中list查询及所需时间计算操作示例
Jun 21 Python
详解Python3之数据指纹MD5校验与对比
Jun 11 Python
浅谈PySpark SQL 相关知识介绍
Jun 14 Python
简单了解django索引的相关知识
Jul 17 Python
Python中Unittest框架的具体使用
Aug 27 Python
python str字符串转uuid实例
Mar 03 Python
详解Pycharm第三方库的安装及使用方法
Dec 29 Python
深度学习tensorflow基础mnist
Apr 14 Python
Python人工智能之混合高斯模型运动目标检测详解分析
Nov 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 __autoload()方法真的影响性能吗?
2012/03/30 PHP
PHP读取汉字的点阵数据
2015/06/22 PHP
PHP FileSystem 文件系统常用api整理总结
2019/07/12 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
枚举JavaScript对象的函数
2006/12/22 Javascript
javascript 面向对象编程 聊聊对象的事
2009/09/17 Javascript
JQuery 网站换肤功能实现代码
2009/11/02 Javascript
js读写(删除)Cookie实例详解
2013/04/17 Javascript
前端开发过程中浏览器版本的两种判定方法
2013/10/30 Javascript
express的中间件cookieParser详解
2014/12/04 Javascript
jQuery中extend()和fn.extend()方法详解
2015/06/03 Javascript
jQuery数据检索中根据关键字快速定位GridView指定行的实现方法
2016/06/08 Javascript
详解js实现线段交点的三种算法
2016/08/09 Javascript
完全深入学习Bootstrap表单
2016/11/28 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
2017/01/30 Javascript
js + css实现标签内容切换功能(实例讲解)
2017/10/09 Javascript
Angular弹出模态框的两种方式
2017/10/19 Javascript
详解vue填坑之解决部分浏览器不支持pushState方法
2018/07/12 Javascript
Async/Await替代Promise的6个理由
2019/06/15 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
javascript设计模式 ? 单例模式原理与应用实例分析
2020/04/09 Javascript
用Python编写一个每天都在系统下新建一个文件夹的脚本
2015/05/04 Python
Python 高级专用类方法的实例详解
2017/09/11 Python
Python实现PS图像调整之对比度调整功能示例
2018/01/26 Python
数据清洗--DataFrame中的空值处理方法
2018/07/03 Python
Python列表list排列组合操作示例
2018/12/18 Python
Net-A-Porter美国官网:全球时尚奢侈品名站
2017/02/11 全球购物
英国山地公路自行车商店:Tweeks Cycles
2018/03/16 全球购物
2014年创卫实施方案
2014/02/18 职场文书
2015年干部教育培训工作总结
2015/05/15 职场文书
2015年乡镇组织委员工作总结
2015/10/23 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书
护理工作心得体会
2016/01/22 职场文书
解决sql server 数据库,sa用户被锁定的问题
2021/06/11 SQL Server
oracle重置序列从0开始递增1
2022/02/28 Oracle
教你nginx跳转配置的四种方式
2022/07/07 Servers