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中getattr函数使用方法 getattr实现工厂模式
Jan 20 Python
python内存管理分析
Apr 08 Python
Python文件右键找不到IDLE打开项解决办法
Jun 08 Python
Python注释详解
Jun 01 Python
Python实现将json文件中向量写入Excel的方法
Mar 26 Python
Python全排列操作实例分析
Jul 24 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
Sep 02 Python
python读csv文件时指定行为表头或无表头的方法
Jun 26 Python
关于Python中的向量相加和numpy中的向量相加效率对比
Aug 26 Python
Python字符串的修改方法实例
Dec 19 Python
Python多进程编程multiprocessing代码实例
Mar 12 Python
python实现ftp文件传输系统(案例分析)
Mar 20 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+mysql开源XNA 聚合程序发布 下载
2007/07/13 PHP
php正则校验用户名介绍
2008/07/19 PHP
PHP实现针对日期,月数,天数,周数,小时,分,秒等的加减运算示例【基于strtotime】
2017/04/19 PHP
JavaScript 模拟类机制及私有变量的方法及思路
2013/07/10 Javascript
如何动态的导入js文件具体该怎么实现
2014/01/14 Javascript
js面向对象编程之如何实现方法重载
2014/07/02 Javascript
jQuery实现复选框成对选择及对应取消的方法
2015/03/03 Javascript
jQuery实现为图片添加镜头放大效果的方法
2015/06/25 Javascript
基于JavaScript代码实现pc与手机之间的跳转
2015/12/23 Javascript
bootstrap-treeview自定义双击事件实现方法
2016/01/09 Javascript
浅谈jquery设置和获得checkbox选中的问题
2016/08/19 Javascript
详解基于Bootstrap+angular的一个豆瓣电影app
2017/06/26 Javascript
JavaScript基于activexobject连接远程数据库SQL Server 2014的方法
2017/07/12 Javascript
vue-cli实现多页面多路由的示例代码
2018/01/30 Javascript
微信小程序在text文本实现多种字体样式
2019/11/08 Javascript
JavaScript 类的封装操作示例详解
2020/05/16 Javascript
JavaScript语法约定和程序调试原理解析
2020/11/03 Javascript
[03:59]5分钟带你了解什么是DOTA2(第二期)
2017/02/07 DOTA
python添加模块搜索路径方法
2017/09/11 Python
Python之Scrapy爬虫框架安装及简单使用详解
2017/12/22 Python
Python3.x爬虫下载网页图片的实例讲解
2018/05/22 Python
windows下python安装pip图文教程
2018/05/25 Python
详解用Python练习画个美队盾牌
2019/03/23 Python
python networkx 根据图的权重画图实现
2019/07/10 Python
解决Mac下使用python的坑
2019/08/13 Python
python垃圾回收机制(GC)原理解析
2019/12/30 Python
DjangoWeb使用Datatable进行后端分页的实现
2020/05/18 Python
PyQt5中QSpinBox计数器的实现
2021/01/18 Python
python 模块导入问题汇总
2021/02/01 Python
美国精品地毯网站:Boutique Rugs
2020/03/04 全球购物
对外汉语专业大学生职业生涯规划范文
2014/09/13 职场文书
农村党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
2014年加油站工作总结
2014/12/04 职场文书
职代会闭幕词
2015/01/28 职场文书
Windows Server 2019 配置远程控制以及管理方法
2022/04/28 Servers
Redis配置外网可访问(redis远程连接不上)的方法
2022/12/24 Redis