在多個進程之間共享一個結果隊列

| | | | | | | | | | | | | |

multiprocessing 模塊的文檔展示瞭如何將隊列傳遞給以 multiprocessing.Process 啟動的進程。但是如何與以 apply_async 開始的異步工作進程共享隊列?我不需要動態加入或其他任何東西,只是讓工人(反复)將他們的結果報告回基地的一種方式。

import multiprocessing def worker(name, que): que. put("%d is done" % name) if __name__ == "__main__": pool = multiprocessing.Pool(processes=3) q = multiprocessing.Queue() workers = pool.apply_async(worker, (33, q)) 

這失敗了:RuntimeError: 隊列對象應該只通過繼承在進程之間共享。我理解這意味著什麼,我理解繼承而不是繼承的建議需要酸洗/取消酸洗(以及所有特殊的 Windows 限制)。但是 如何 我如何以一種有效的方式傳遞隊列?我找不到示例,我嘗試了幾種失敗的替代方法各種方式。請幫忙?