首頁 >後端開發 >Python教學 >如何在Python多處理中的進程之間共享資料?

如何在Python多處理中的進程之間共享資料?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-06 16:23:021103瀏覽

How to Share Data Between Processes in Python Multiprocessing?

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

在多重處理中,為每個行程建立一個新的Python 實例,從而產生不同的全域變數州。因此,子進程對全域變數的更新對父進程仍然不可見。

不可拾取的物件

多處理依賴於透過 pickle 進行序列化。如果您想要交換的物件無法被 pickle,它們就無法在進程之間共用。這包括儲存在 Manager 物件中或透過佇列傳輸的任何資料。

替代方法

  • 自訂狀態管理:考慮使用解決方案在多處理模組之外,例如共享記憶體或資料庫,以管理進程範圍的狀態。
  • 子類化和Pickling: 如果不可picklable 物件是Python 類,請調查以下可能性對其進行子類化並實現getstate setstate 方法來啟用pickling。
  • 透過佇列進行資料交換: 不要直接傳遞不可picklable 對象,而是考慮傳輸透過佇列將所需資料作為字串或其他可序列化格式。這允許子進程無需物件序列化即可操作資料。

以上是如何在Python多處理中的進程之間共享資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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