2013-06-20 108 views
2

我產生了一個獨立的進程來處理我的雲服務。我spawnb它是這樣的:進程間共享字典

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

我想知道如果我可以有一個共享字典之間的這個CloudProc和我目前的主要過程?

編輯: 另外我想用鹹菜我的數據轉儲到從工藝文件並加載它回來了,這要求我使用join()方法來等待進程完成並退出。

第二編輯 所以,我現在有聲明如下mac_dict = {}我的字典,然後我填在我的子進程,並希望訪問它在我的主要過程。現在我試過了:

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

那麼Python如何知道應該從Managers調用dict()? 有什麼我可以遵循的例子嗎?

回答

5

得到它,簡化,我沒有這樣說:

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 
+0

樂意協助第二編輯......我正要拿出一個例子,但你似乎有得到它。 –

+0

這裏值得注意的是,你不必將locdict傳遞給目標函數過程。如果你只是從它的正文開始locdict [1] ='blah',函數myf將會成功更改locd。 – Totem