首頁 > 後端開發 > Python教學 > 如何在多處理中更新子程序的全域變數?

如何在多處理中更新子程序的全域變數?

Mary-Kate Olsen
發布: 2024-11-06 07:54:02
原創
564 人瀏覽過

How Can I Update Global Variables from Subprocesses in Multiprocessing?

多處理|全域變數更新未回到父程式

在多處理中,每個子程序作為一個單獨的Python 實例運行,具有自己的記憶體和全域狀態。因此,對子流程中的全域變數進行的任何更新對於父流程都是不可見的。此外,使用共享代理程式或佇列在進程之間傳遞的資料必須是可pickle的。

要解決有關LORR 物件的不可pickleability 的特定問題,請考慮以下方法:

  1. 建立LORR 的可pickle子類別
    這涉及建立一個繼承自LORR 的新類別並實作__getstate__ 和__setstate__ 方法以啟用pickle。
  2. 傳遞對ctype object:
    找到一種方法將相關資料儲存在 ctype 物件中,並將對該物件的引用傳遞給子程序。不過這種方式可能不可靠。
  3. 使用佇列傳送訊息
    使用佇列建立父子程序之間的通訊系統。父級可以向子級發送方法調用,子級可以透過佇列返回結果。

請記住,最合適的方法將取決於 LORR 物件的具體實作和功能。

以上是如何在多處理中更新子程序的全域變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板