首頁  >  文章  >  後端開發  >  在Python中使用多處理時如何更新父進程中的全域變數?

在Python中使用多處理時如何更新父進程中的全域變數?

Susan Sarandon
Susan Sarandon原創
2024-11-08 04:19:01667瀏覽

How to Update Global Variables in Parent Process When Using multiprocessing in Python?

全域變數更新未反映在多處理的父行程

在多重處理中,建立一個新行程會啟動一個具有自己的全域狀態的單獨的Python實例。子行程中的全域變數進行的修改對父行程不可見。

此問題源自於使用多處理在流程之間傳輸的資料通常是醃製的事實。 Pickling 要求物件可序列化,這對於某些物件(如 LORR 實例)可能是不可能的。

要解決此問題,請考慮以下方法:

  1. 建立ctype 物件: 將資料儲存在ctype 物件中並將記憶體參考傳遞給子進程。然而,這種方法並不常用,而且可能很複雜。
  2. 子類化LORR: 如果LORR 是一個類別並且可以子類化,則實作getstate setstate 方法來啟用酸洗。不過,這需要深入了解 LORR 的內部結構。
  3. 透過佇列進行訊息傳遞: 或者,您可以使用佇列在進程之間進行通訊。不傳遞 LORR 實例,而是向子程序發送訊息來請求特定方法執行。然後,可以透過佇列將方法中的資料作為字串傳回。

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

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