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 (2)
Oct 31 Python
Django实现支付宝付款和微信支付的示例代码
Jul 25 Python
树莓派采用socket方式文件传输(python)
Jun 22 Python
Numpy将二维数组添加到空数组的实现
Dec 05 Python
python json.dumps中文乱码问题解决
Apr 01 Python
如何解决cmd运行python提示不是内部命令
Jul 01 Python
Python Opencv图像处理基本操作代码详解
Aug 31 Python
通过代码实例了解Python sys模块
Sep 14 Python
Django框架安装及项目创建过程解析
Sep 14 Python
详解Python利用configparser对配置文件进行读写操作
Nov 03 Python
Python实现Word文档转换Markdown的示例
Dec 22 Python
python编程实现清理微信重复缓存文件
Nov 01 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输出全球各个时区列表的方法
2015/03/31 PHP
php session实现多级目录存放实现代码
2016/02/03 PHP
Jquery Ajax.ashx 高效分页实现代码
2009/10/20 Javascript
对jQuery的事件绑定的一些思考(补充)
2013/04/20 Javascript
解析jquery获取父窗口的元素
2013/06/26 Javascript
浅析javascript 定时器
2014/12/23 Javascript
JS判断字符串包含的方法
2015/05/05 Javascript
Javascript动画效果(2)
2016/10/11 Javascript
BootStrap下的弹出框加载select2框架失败的解决方法
2017/08/31 Javascript
解决angular2 获取到的数据无法实时更新的问题
2018/08/31 Javascript
Vue实现商品分类菜单数量提示功能
2019/07/26 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
vue制作抓娃娃机的示例代码
2020/04/17 Javascript
Javascript生成器(Generator)的介绍与使用
2021/01/31 Javascript
Python实现的排列组合计算操作示例
2017/10/13 Python
tensorflow实现softma识别MNIST
2018/03/12 Python
基于Django与ajax之间的json传输方法
2018/05/29 Python
浅谈Python 列表字典赋值的陷阱
2019/01/20 Python
python 实现矩阵上下/左右翻转,转置的示例
2019/01/23 Python
Python3.5 Pandas模块缺失值处理和层次索引实例详解
2019/04/23 Python
pandas 数据结构之Series的使用方法
2019/06/21 Python
基于Python爬取股票数据过程详解
2020/10/21 Python
pytorch 移动端部署之helloworld的使用
2020/10/30 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
2020/12/17 Python
Python使用pyenv实现多环境管理
2021/02/05 Python
html5借用repeating-linear-gradient实现一把刻度尺(ruler)
2019/09/09 HTML / CSS
医生自荐信
2013/10/11 职场文书
查环查孕证明
2014/01/10 职场文书
老师的检讨书
2014/02/23 职场文书
应届毕业生求职信
2014/05/26 职场文书
简单租房协议书(范本)
2014/10/13 职场文书
公司仓库管理制度
2015/08/04 职场文书
观看禁毒宣传片后的感想
2015/08/11 职场文书
2019通用版导游词范本!
2019/08/07 职场文书
Python中快速掌握Data Frame的常用操作
2021/03/31 Python
mysql优化
2021/04/06 MySQL