2013-06-18 72 views
2

一個父啓動兩個進程A,B與Python多處理應該並行運行。python多處理器管理器 - 共享列表 - 連接重置對等104

分享Multiprocessing.Manager LIST_1 list_2

到LIST_1是寫兩個列表作爲參數傳遞給A,內部的LIST_1成爲list_W。 從作爲參數傳遞給A的list_2中讀取,在list_2中變成list_R B寫入到作爲參數傳遞給B的list_2,在B list_2中變成list_W。 B從作爲參數傳遞給B的list_1中讀取,B list_1內部變成list_R

如果我調用A或B不是多處理進程,而是作爲單個函數調用,但它們運行時沒有問題。

如果我叫他們爲multiprocessing.process這是什麼情況:

Traceback (most recent call last): 
    File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap 
    self.run() 
    File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run 
    self._target(*self._args, **self._kwargs) 
    File "myprg/A.py", line 47, in A 
    watch()               
    File "myprg/DEFINITIONS.py", line 87, in watch 
    if list_W[0] != list_R[0]: 
    File "<string>", line 2, in __getitem__ 
    File "/usr/lib/python2.7/multiprocessing/managers.py", line 759, in _callmethod 
    kind, result = conn.recv() 
IOError: [Errno 104] Connection reset by peer 

手錶()比較兩個列表值,但作爲一個在讀,一個寫在每個程序,我可以不明白這是什麼問題。

回答

0

如果我添加

A.join() 
B.join() 

錯誤消失,程序運行。爲什麼會這樣?