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的多态性实例分析
Jul 07 Python
利用python生成一个导出数据库的bat脚本文件的方法
Dec 30 Python
老生常谈Python序列化和反序列化
Jun 28 Python
朴素贝叶斯Python实例及解析
Nov 19 Python
python实现简单名片管理系统
Nov 30 Python
Django之模型层多表操作的实现
Jan 08 Python
Python基础之文件读取的讲解
Feb 16 Python
Pandas透视表(pivot_table)详解
Jul 22 Python
python之MSE、MAE、RMSE的使用
Feb 24 Python
python获取天气接口给指定微信好友发天气预报
Dec 28 Python
python中24小时制转换为12小时制的方法
Jun 18 Python
如何使用pdb进行Python调试
Jun 30 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 模拟登陆MSN并获得用户信息
2009/05/16 PHP
javascript 拖放效果实现代码
2010/01/22 Javascript
JS基础之undefined与null的区别分析
2011/08/08 Javascript
快速掌握Node.js之Window下配置NodeJs环境
2016/03/21 NodeJs
javascript显示倒计时控制按钮的简单实现
2016/06/07 Javascript
html+js实现简单的计算器代码(加减乘除)
2016/07/12 Javascript
AngularJs bootstrap搭载前台框架——基础页面
2016/09/01 Javascript
详解angularjs中如何实现控制器和指令之间交互
2017/05/31 Javascript
详解vue项目打包后通过百度的BAE发布到网上的流程
2018/03/05 Javascript
layerUI下的绑定事件实例代码
2018/08/17 Javascript
javascript中数组的常用算法深入分析
2019/03/12 Javascript
vue大型项目之分模块运行/打包的实现
2020/09/21 Javascript
Vue实现简单购物车功能
2020/12/13 Vue.js
[36:13]Mineski vs iG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python 全局变量的import机制介绍
2017/09/07 Python
利用python对Excel中的特定数据提取并写入新表的方法
2018/06/14 Python
django认证系统实现自定义权限管理的方法
2018/07/16 Python
Python爬取商家联系电话以及各种数据的方法
2018/11/10 Python
python 用opencv调用训练好的模型进行识别的方法
2018/12/07 Python
Python基于Tkinter模块实现的弹球小游戏
2018/12/27 Python
python微信撤回监测代码
2019/04/29 Python
python多线程http压力测试脚本
2019/06/25 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
2019/10/28 Python
Django实现将views.py中的数据传递到前端html页面,并展示
2020/03/16 Python
python中sklearn的pipeline模块实例详解
2020/05/21 Python
python3爬虫中多线程进行解锁操作实例
2020/11/25 Python
欧洲高端品牌直销店:Fashionesta
2016/08/31 全球购物
什么是lambda函数
2013/09/17 面试题
房地产管理毕业生自荐信
2013/11/04 职场文书
《童年的发现》教学反思
2014/02/14 职场文书
试用期转正员工自我评价
2014/09/18 职场文书
正能量励志演讲稿三分钟(范文)
2019/07/11 职场文书
如何开发一个渐进式Web应用程序PWA
2021/05/10 Javascript
python基于机器学习预测股票交易信号
2021/05/25 Python
MySQL数据库 安全管理
2022/05/06 MySQL
Redis Lua脚本实现ip限流示例
2022/07/15 Redis