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基础教程之python消息摘要算法使用示例
Feb 10 Python
打包发布Python模块的方法详解
Sep 18 Python
python笔记:mysql、redis操作方法
Jun 28 Python
Django rest framework工具包简单用法示例
Jul 20 Python
Python+OpenCV图片局部区域像素值处理详解
Jan 23 Python
Python微信操控itchat的方法
May 31 Python
Python 窗体(tkinter)按钮 位置实例
Jun 13 Python
django认证系统实现自定义权限管理的方法
Aug 28 Python
pytorch对梯度进行可视化进行梯度检查教程
Feb 04 Python
Python argparse模块使用方法解析
Feb 20 Python
python跨文件使用全局变量的实现
Nov 17 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
Nov 24 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
Adodb的十个实例(清晰版)
2006/12/31 PHP
微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解
2019/04/10 PHP
使用PHP开发留言板功能
2019/11/19 PHP
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
2011/09/26 Javascript
js获取判断上传文件后缀名的示例代码
2014/02/19 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
js判断浏览器类型及设备(移动页面开发)
2015/07/30 Javascript
jquery实现多条件筛选特效代码分享
2015/08/28 Javascript
js实现图片切换(动画版)
2016/12/25 Javascript
关于js中的鼠标事件总结
2017/07/11 Javascript
浅谈JS对象添加getter与setter的5种方法
2018/06/09 Javascript
vue如何解决循环引用组件报错的问题
2018/09/22 Javascript
利用Node.js如何实现文件循环覆写
2019/04/05 Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
2019/05/06 Javascript
解决layui-open关闭自身窗口的问题
2019/09/10 Javascript
原生JS实现天气预报
2020/06/16 Javascript
uniapp实现横向滚动选择日期
2020/10/21 Javascript
[35:43]2018DOTA2亚洲邀请赛 4.1 小组赛B组 paiN vs Effect
2018/04/03 DOTA
Python实现破解猜数游戏算法示例
2017/09/25 Python
git进行版本控制心得详谈
2017/12/10 Python
python导出chrome书签到markdown文件的实例代码
2017/12/27 Python
python系统指定文件的查找只输出目录下所有文件及文件夹
2020/01/19 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
解决Jupyter无法导入已安装的 module问题
2020/04/17 Python
pycharm sciview的图片另存为操作
2020/06/01 Python
在pycharm中关掉ipython console/PyDev操作
2020/06/09 Python
vscode+PyQt5安装详解步骤
2020/08/12 Python
css3 transform 3d 使用css3创建动态3d立方体(html5实践)
2013/01/06 HTML / CSS
Nicole Miller官方网站:纽约女装品牌
2019/09/14 全球购物
银行行长竞聘演讲稿
2014/04/23 职场文书
《三国志》赏析
2019/08/27 职场文书
Vue中foreach数组与js中遍历数组的写法说明
2021/06/05 Vue.js
java实现对Hadoop的操作
2021/07/01 Java/Android
MySQL事务的ACID特性以及并发问题方案
2022/07/15 MySQL