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连接sql server乱码的解决方法
Jan 28 Python
使用python绘制人人网好友关系图示例
Apr 01 Python
Python入门教程之运算符与控制流
Aug 17 Python
Python 含参构造函数实例详解
May 25 Python
Python 文件操作的详解及实例
Sep 18 Python
详解用python实现简单的遗传算法
Jan 02 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
Oct 25 Python
Python unittest单元测试框架实现参数化
Apr 29 Python
python代码实现将列表中重复元素之间的内容全部滤除
May 22 Python
Python3创建Django项目的几种方法(3种)
Jun 03 Python
浅谈Python 钉钉报警必备知识系统讲解
Aug 17 Python
python中altair可视化库实例用法
Jan 26 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 项目的方法
2007/01/02 PHP
smarty半小时快速上手入门教程
2014/10/27 PHP
拖动Html元素集合 Drag and Drop any item
2006/12/22 Javascript
JS模拟面向对象全解(二、类型与赋值)
2011/07/13 Javascript
jQuery Ajax请求状态管理器打包
2012/05/03 Javascript
jQuery遍历之next()、nextAll()方法使用实例
2014/11/08 Javascript
基于jQuery实现点击弹出层实例代码
2016/01/01 Javascript
js正则表达式replace替换变量方法
2016/05/21 Javascript
jQuery基础知识点总结(DOM操作)
2016/06/01 Javascript
深入浅析JavaScript中的Function类型
2016/07/09 Javascript
详解JS去重及字符串奇数位小写转大写
2016/12/29 Javascript
详解基于Vue2.0实现的移动端弹窗(Alert, Confirm, Toast)组件
2018/08/02 Javascript
vue服务端渲染操作简单入门实例分析
2019/08/28 Javascript
js实现整体缩放页面适配移动端
2020/03/31 Javascript
三步搞定:Vue.js调用Android原生操作
2020/09/07 Javascript
python BeautifulSoup使用方法详解
2013/11/21 Python
python结合opencv实现人脸检测与跟踪
2015/06/08 Python
Python读取网页内容的方法
2015/07/30 Python
python print 按逗号或空格分隔的方法
2018/05/02 Python
Python实现提取XML内容并保存到Excel中的方法
2018/09/01 Python
利用python开发app实战的方法
2019/07/09 Python
python实现在函数中修改变量值的方法
2019/07/16 Python
django中使用Celery 布式任务队列过程详解
2019/07/29 Python
python+OpenCV实现车牌号码识别
2019/11/08 Python
Django扫码抽奖平台的配置过程详解
2021/01/14 Python
Expedia瑞典官网:预订度假屋、酒店、汽车租赁、机票等
2021/01/23 全球购物
木马的传播途径主要有哪些
2016/04/08 面试题
医药营销专业个人自荐信
2013/09/29 职场文书
英语专业学生个人求职信
2014/01/28 职场文书
财务学生的职业生涯发展
2014/02/11 职场文书
万年牢教学反思
2014/02/15 职场文书
化学教育专业求职信
2014/07/08 职场文书
个人整改措施落实情况汇报
2014/10/29 职场文书
社区节水倡议书
2015/04/29 职场文书
python保存大型 .mat 数据文件报错超出 IO 限制的操作
2021/05/10 Python
Spring实现内置监听器
2021/07/09 Java/Android