在进程之间共享字典

时间:2013-06-20 21:39:13

标签: python-2.7 dictionary multiprocessing shared-memory

我产生了一个单独的进程来处理我的云服务。我像这样生成它:

CldProc = Process(target=CloudRun)
CldProc.start()

我想知道我是否可以在CloudProc和我当前的主流程之间拥有一个共享字典?

编辑: 或者我想使用pickle将我的数据转储到进程中的文件并加载回来,这需要我使用join()来等待进程完成并退出。

第二次编辑 所以,我现在将我的dict声明为mac_dict = {},然后将其填入我的子进程并想要在我的主进程中访问它。现在我只是尝试了这个:

>>> dict = dict()
>>> dict['A'] = 1
>>> print dict
{'A': 1}

那么Python如何知道应该从Managers调用dict()? 我可以遵循任何例子吗?

2 个答案:

答案 0 :(得分:6)

知道了,为了简化,我这样做了:

from multiprocessing import Process, Manager

def myf(myd):
    myd[1] = "HELLO WORLD!"

def proc(d):
    myf(d)

m=Manager()
locdict=m.dict()
locdict[2] = "HI BUDDY!"

p = Process(target=proc, args=(locdict,))

p.start()
p.join()
print locdict

答案 1 :(得分:3)

特别关注multiprocessing.ManagerManager.dict()方法。它们可能满足您的需求。