多重处理错误:“无法 Pickle
您的代码遇到“ PicklingError:无法 pickle
了解 Pickling 层次结构
Python 的 pickling 机制可以将对象序列化为字节流以便稍后反序列化,但是并非所有对象都可以 pickled。值得注意的是,只有在模块顶层定义的函数才是可pickle的,这是因为pickle函数需要访问函数的全局变量,而在另一个函数或类中定义时则不可用。
您的代码情况
虽然您的函数是在顶层定义的,但它调用的其他函数可能不是顶层定义。会产生递归依赖,导致无法对顶层函数进行 pickle。
解决方案:移动函数定义
解决问题的关键是确保您尝试 pickle 的函数是在模块的顶层定义的。如有必要,请将函数的定义移至任何类或其他函数之外。
这是一个示例:
# Original code class Foo: @staticmethod def work(self): pass # Updated code def work(foo): foo.work()
总结
通过了解酸洗过程及其局限性,您可以避免与功能酸洗相关的错误。请记住在模块的顶层定义函数,以确保在使用多处理时成功对其进行酸洗。
以上是为什么我无法在多处理中 Pickle 我的函数?的详细内容。更多信息请关注PHP中文网其他相关文章!