如何在Python中的多個進程之間共享結果隊列?

Susan Sarandon
發布: 2024-10-19 18:45:02
原創
626 人瀏覽過

How to Share a Result Queue Between Multiple Processes in Python?

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

使用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中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!