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脚本实现数据导出excel格式的简单方法(推荐)
Dec 30 Python
python PyTorch参数初始化和Finetune
Feb 11 Python
python pandas实现excel转为html格式的方法
Oct 23 Python
详解python做UI界面的方法
Feb 27 Python
python求最大值,不使用内置函数的实现方法
Jul 09 Python
Django实现分页显示效果
Oct 31 Python
Selenium python时间控件输入问题解决方案
Jul 22 Python
Django生成数据库及添加用户报错解决方案
Oct 09 Python
python 中[0]*2与0*2的区别说明
May 10 Python
Python 机器学习工具包SKlearn的安装与使用
May 14 Python
pytorch训练神经网络爆内存的解决方案
May 22 Python
分位数回归模型quantile regeression应用详解及示例教程
Nov 02 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/07/28 PHP
php ZipArchive压缩函数详解实例
2013/11/06 PHP
PHP采集静态页面并把页面css,img,js保存的方法
2014/12/23 PHP
Yii框架组件和事件行为管理详解
2016/05/20 PHP
PHP new static 和 new self详解
2017/02/19 PHP
通过PHP设置BugFree获取邮箱通知
2019/04/25 PHP
javascript之卸载鼠标事件的代码
2007/05/14 Javascript
js的逻辑运算符 ||
2010/05/31 Javascript
js判断浏览器类型的方法
2013/08/07 Javascript
jQuery操作Select的Option上下移动及移除添加等等
2013/11/18 Javascript
JavaScript利用append添加元素报错的解决方法
2014/07/01 Javascript
微信小程序 textarea 组件详解及简单实例
2017/01/10 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
bootstrap选项卡扩展功能详解
2017/06/14 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
vue路由权限校验功能的实现代码
2020/06/07 Javascript
vue实现给div绑定keyup的enter事件
2020/07/31 Javascript
JS实现4位随机验证码
2020/10/19 Javascript
原生js实现点击按钮复制内容到剪切板
2020/11/19 Javascript
Python实现的多项式拟合功能示例【基于matplotlib】
2018/05/15 Python
利用python脚本如何简化jar操作命令
2019/02/24 Python
Python aiohttp百万并发极限测试实例分析
2019/10/26 Python
pandas读取csv文件提示不存在的解决方法及原因分析
2020/04/21 Python
sklearn的predict_proba使用说明
2020/06/28 Python
萨克斯第五大道的折扣店:Saks Fifth Avenue OFF 5TH
2016/08/25 全球购物
沙特阿拉伯家用电器和电子产品购物网站:Sheta and Saif
2020/04/03 全球购物
文员岗位职责
2013/11/09 职场文书
幼儿园小班教学反思
2014/02/02 职场文书
会计学生自我鉴定
2014/02/06 职场文书
工程造价专业大学生职业规划范文
2014/03/09 职场文书
公益广告标语
2014/06/19 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
检讨书范文
2015/01/27 职场文书
企业党建工作总结2015
2015/05/26 职场文书
2016年公司中秋节致辞
2015/11/26 职场文书
Matlab如何实现矩阵复制扩充
2021/06/02 Python