在Multiprocessing.Process 中存取函數的回傳值
在使用Python 的多重處理中,取得傳遞給多處理的函數的返回值。進程可能很棘手,因為它不會直接儲存在 Process 物件中。
考慮以下內容範例:
import multiprocessing def worker(procnum): '''worker function''' print(str(procnum) + ' represent!') return procnum if __name__ == '__main__': jobs = [] for i in range(5): p = multiprocessing.Process(target=worker, args=(i,)) jobs.append(p) p.start() for proc in jobs: proc.join() print(jobs)
雖然此程式碼列印每個工作進程的輸出,但我們無法直接存取它們的回傳值。
要檢索回傳值,我們可以使用共享變數。在以下修改後的程式碼中,多處理模組中的 Manager() 用於建立共享字典:
import multiprocessing def worker(procnum, return_dict): """worker function""" print(str(procnum) + " represent!") return_dict[procnum] = procnum if __name__ == "__main__": manager = multiprocessing.Manager() return_dict = manager.dict() jobs = [] for i in range(5): p = multiprocessing.Process(target=worker, args=(i, return_dict)) jobs.append(p) p.start() for proc in jobs: proc.join() print(return_dict.values())
這裡,每個工作進程會用其傳回值更新共用字典 return_dict 。然後主進程可以從共用字典存取這些值。
以上是如何從 Python 中的 Multiprocessing.Process 函數檢索回傳值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!