python 关于multiprocessing中在Namespace的实例下保存dict/list的疑问
时间:2011-12-14
来源:互联网
想在多进程中保存一个shared dict,想把这个dict放在了Namespace()实例下,结果发现对其的赋值无效(对list类型的也无效),想不明白是什么原因,是Namespace/NamespaceProxy不支持这种通过实例方法赋值的方式么?希望明白的给讲下是怎么回事,或者有什么办法能实现?谢谢!
原脚本太长,因此通过python shell来show我的疑问所在:
Python code
原脚本太长,因此通过python shell来show我的疑问所在:
Python code
>>> from multiprocessing.managers import SyncManager >>> mm=SyncManager() >>> mm.start() >>> nms=mm.Namespace() >>> str(nms) 'Namespace()' >>> nms.nr=0 # 简单的变量没有问题 >>> str(nms) 'Namespace(nr=0)' >>> nms.nr=55 # 无问题 >>> str(nms) 'Namespace(nr=55)' >>> nms.d=mm.dict() # shared dict >>> nms.d {} >>> str(nms) 'Namespace(d={}, nr=55)' >>> nms.d['testkey']=78 # 就是这里,赋值无效,但也不出错 >>> str(nms) 'Namespace(d={}, nr=55)' >>> d=mm.dict() # 不放在Namespace实例下则正常 >>> d['testkey']=89 # 赋值正常 >>> d['testkey'] 89 >>> nms.d=mm.dict(thekey=45) # 用一个kv初始化 >>> str(nms) "Namespace(d={'thekey': 45}, nr=55)" >>> nms.d['shit']=66 # 赋值依然无效,也不出错 >>> str(nms) "Namespace(d={'thekey': 45}, nr=55)" >>>
作者: livelivelive 发布时间: 2011-12-14
貌似Namespace支持基本类型,SyncManager里有list(),dict()方法应该可以满足你的需求.刚才查看了一下API
Namespace()
Create a shared Namespace object and return a proxy for it
dict()
Create a shared dict object and return a proxy for it.
list()
Create a shared list object and return a proxy for
Namespace()
Create a shared Namespace object and return a proxy for it
dict()
Create a shared dict object and return a proxy for it.
list()
Create a shared list object and return a proxy for
作者: userguanguan 发布时间: 2011-12-14
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28