python Manager 之dict KeyError问题的解决

yipeiwu_com5年前Python基础

程序需要多进程见共享内存,使用了Manager的dict。

最初代码如下:

from multiprocessing import Process, Manager
d = Manager().dict()
d2 = {}
 
def f():
  d['a1'] = {}
 <span style="color:#ff6666;">  d['a1']['a2'] = 11</span>
  print d['a1']['a2']
 
if __name__ == '__main__':
  p = Process(target=f)
  p.start()
  p.join()

结果报错:

  print d['a1']['a2']
KeyError: 'a2'

解决方案:

from multiprocessing import Process, Manager
d = Manager().dict()
d2 = {}
 
def f():
  d['a1'] = {}
<span style="color:#ff6666;">  d2['a2'] = 11
  d['a1'] = d2</span>
  print d['a1']['a2']
 
if __name__ == '__main__':
  p = Process(target=f)
  p.start()
  p.join()

以上这篇python Manager 之dict KeyError问题的解决就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

Python使用matplotlib绘制三维参数曲线操作示例

Python使用matplotlib绘制三维参数曲线操作示例

本文实例讲述了Python使用matplotlib绘制三维参数曲线操作。分享给大家供大家参考,具体如下: 一 代码 import matplotlib as mpl from mpl...

基于python log取对数详解

log()方法返回x的自然对数,对于x>0。 语法 以下是log()方法的语法: import math math.log( x ) 注意:此函数是无法直接访问的,所以我...

Python socket模块实现的udp通信功能示例

本文实例讲述了Python socket模块实现的udp通信功能。分享给大家供大家参考,具体如下: socket介绍 socket(简称 套接字) 是进程间通信的一种方式,它与其他进程间...

python多线程扫描端口示例

复制代码 代码如下:# -*- coding: cp936 -*-import socketfrom threading import Thread,activeCount,Lockfr...

使用Python中的greenlet包实现并发编程的入门教程

1   动机 greenlet 包是 Stackless 的副产品,其将微线程称为 “tasklet” 。tasklet运行在伪并发中,使用channel进行同步数据...