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

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

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-06 07:54:02584瀏覽

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn