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代码使其加快作用域内的查找
Mar 30 Python
用Python进行一些简单的自然语言处理的教程
Mar 31 Python
Python采用Django制作简易的知乎日报API
Aug 03 Python
Django中针对基于类的视图添加csrf_exempt实例代码
Feb 11 Python
python模块smtplib实现纯文本邮件发送功能
May 22 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
Oct 06 Python
在keras中获取某一层上的feature map实例
Jan 24 Python
Python基于requests库爬取网站信息
Mar 02 Python
python golang中grpc 使用示例代码详解
Jun 03 Python
python 引用传递和值传递详解(实参,形参)
Jun 05 Python
浅谈Selenium+Webdriver 常用的元素定位方式
Jan 13 Python
Django drf请求模块源码解析
Jun 08 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
DOTA2 无惧惊涛骇浪 昆卡大型水友攻略
2020/04/20 DOTA
《魔兽争霸3》重制版究竟重制了什么?玩家:这么糊弄真的好吗?
2020/05/04 魔兽争霸
ExtJS与PHP、MySQL实现存储的方法
2010/04/02 PHP
php数据库连接时容易出错的特殊符号问题
2010/09/01 PHP
php处理json时中文问题的解决方法
2011/04/12 PHP
php仿QQ验证码的实例分析
2013/07/01 PHP
ThinkPHP3.2.2的插件控制器功能简述
2014/07/09 PHP
Laravel中的Auth模块详解
2017/08/17 PHP
详解在YII2框架中使用UEditor编辑器发布文章
2018/11/02 PHP
JS onmousemove鼠标移动坐标接龙DIV效果实例
2013/12/16 Javascript
js动态删除div元素基本思路及实现代码
2014/05/08 Javascript
使用变量动态设置js的属性名
2014/10/19 Javascript
jQuery实现新消息在网页标题闪烁提示
2015/06/23 Javascript
Javascript常用小技巧汇总
2015/06/24 Javascript
Javascript实现的简单右键菜单类
2015/09/23 Javascript
JS简单实现String转Date的方法
2016/03/02 Javascript
基于jQuery Tipso插件实现消息提示框特效
2016/03/16 Javascript
把普通对象转换成json格式的对象的简单实例
2016/07/04 Javascript
利用Angular.js编写公共提示模块的方法教程
2017/05/28 Javascript
nuxt.js服务端渲染中axios和proxy代理的配置操作
2020/11/06 Javascript
[59:44]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 paiN vs iG
2018/03/31 DOTA
一篇不错的Python入门教程
2007/02/08 Python
python实现给微信公众号发送消息的方法
2017/06/30 Python
python实现逆序输出一个数字的示例讲解
2018/06/25 Python
django表单的Widgets使用详解
2019/07/22 Python
Python计算不规则图形面积算法实现解析
2019/11/22 Python
Python关于__name__属性的含义和作用详解
2020/02/19 Python
用python实现学生管理系统
2020/07/24 Python
美国零售商店:Blue&Cream
2017/04/07 全球购物
高二学生评语大全
2014/04/25 职场文书
个人三严三实对照检查材料
2014/09/25 职场文书
致百米运动员广播稿5篇
2014/10/13 职场文书
python 通过使用Yolact训练数据集
2021/04/06 Python
Oracle创建只读账号的详细步骤
2021/06/07 Oracle
Python基础之条件语句详解
2021/06/16 Python
Redis源码阅读:Redis字符串SDS详解
2021/07/15 Redis