使用物件導向程式碼進行多重處理:解決無法Pickle 錯誤
在多重處理中,了解物件的可醃製性至關重要在進程之間有效地分配工作。然而,綁定方法帶來了挑戰,因為它們本質上不是可醃製的,會導致錯誤「無法醃製
要解決此問題,一種方法是註冊使用 copy_reg 模組自訂酸洗/取消酸洗功能。這使我們能夠定義如何對綁定方法進行 pickle 和 unpickled。
Steven Bethard 的有用貢獻中概述了一種執行此操作的方法。以下是一個如何實現的範例:
import copy_reg def reduce_method(m): return (getattr, (m.__self__, m.__func__.__name__)) copy_reg.pickle(type(lambda x: x), reduce_method)
透過使用 copy_reg 註冊此方法,綁定方法可以在 pickling 期間轉換為 (getattr, (object, method_name)) 形式的元組。然後,該元組可用於在 unpickle 期間重建接收端的方法。
透過採用此技術,可以在多重處理中使用綁定方法,而不會遇到「無法 pickle」錯誤。這允許採用更靈活和物件導向的方法在多個進程之間分配工作,從而實現更有效率和可擴展的程式碼執行。
以上是如何解決物件導向多重處理中的「Can't Pickle」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!