如何在多個進程之間共享結果隊列
使用multiprocessing 模組的apply_async 處理非同步工作進程時() 函數中,重要的是要考慮如何安全地共享佇列。錯誤「RuntimeError:佇列物件只能透過繼承在進程之間共用」來突顯需要以防止 pickling/unpickling 問題的方式傳遞佇列。
要解決此問題,我們可以利用 multiprocessing.Manager () 類,它提供了一種管理物件並使它們可供不同工作人員存取的方法。
<code class="python">import multiprocessing def worker(name, que): que.put("%d is done" % name) if __name__ == '__main__': pool = multiprocessing.Pool(processes=3) m = multiprocessing.Manager() q = m.Queue() workers = pool.apply_async(worker, (33, q))</code>
在此範例中,我們建立一個 Manager 物件 (m) 並使用它來管理佇列(q)。透過這樣做,我們創建了一個共享記憶體段,即使在非同步場景中,該共享記憶體段也允許多個進程安全地存取佇列。
以上是如何在Python中的多個進程之間共享結果隊列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!