我從multiprocessing.Process創建子類。如何在多處理中從start()和run()中更新屬性
對象p.run()可以從long_runtime_proc更新instance.ret_value,但p.start()無法獲取ret_value,儘管long_runtime_proc被調用並運行。
如何獲得p.start()的ret_value?
*class myProcess (multiprocessing.Process):
def __init__(self, pid, name, ret_value=0):
multiprocessing.Process.__init__(self)
self.id = pid
self.ret_value = ret_value
def run(self):
self.ret_value = long_runtime_proc (self.id)*
感謝您的repy。 p.run()只是在主進程中運行它的進程而不是子進程,所以它可以返回值給主進程。而且這不是我所需要的。 p.start()確實會調用一個新進程,但不能將值傳遞給父進程。 – xinwu
@xinwu:正確,這就是我說的:'p.run()'運行在同一個進程中,所以你可以得到結果。 'p.start()'在子進程中運行'run()'方法。如果您進一步閱讀我的答案,您會看到解決方案是使用隊列或某種其他形式的進程間通信。 – mhawke
是的,我可以使用隊列或管道從並行進程獲取返回值。感謝您的回覆。 – xinwu