全域變數更新未反映在多處理的父行程 在多重處理中,建立一個新行程會啟動一個具有自己的全域狀態的單獨的Python實例。子行程中的全域變數進行的修改對父行程不可見。 此問題源自於使用多處理在流程之間傳輸的資料通常是醃製的事實。 Pickling 要求物件可序列化,這對於某些物件(如 LORR 實例)可能是不可能的。 要解決此問題,請考慮以下方法: 建立ctype 物件: 將資料儲存在ctype 物件中並將記憶體參考傳遞給子進程。然而,這種方法並不常用,而且可能很複雜。 子類化LORR: 如果LORR 是一個類別並且可以子類化,則實作getstate 和 setstate 方法來啟用酸洗。不過,這需要深入了解 LORR 的內部結構。 透過佇列進行訊息傳遞: 或者,您可以使用佇列在進程之間進行通訊。不傳遞 LORR 實例,而是向子程序發送訊息來請求特定方法執行。然後,可以透過佇列將方法中的資料作為字串傳回。