当使用 Python 的多处理模块来分发并发执行的任务时,会出现一个明显的问题:尝试将绑定方法与 Pool.map() 结合使用。这个障碍表现为“PicklingError: Can't pickle
要纠正这种困境,了解其固有的限制至关重要的多处理。为了促进进程之间的通信,多处理依赖于 pickling 在进程之间序列化和传输对象。不幸的是,绑定方法(本质上是绑定到类实例的函数)表现出不良的酸洗行为。
解决方案在于利用 copy_reg 标准库函数的强大功能来规避这个酸洗障碍。 copy_reg 允许为非常规对象(包括绑定方法)注册自定义 pickling 和 unpickling 处理程序。
其中一个实现(正如 Steven Bethard 在相关线程中令人信服地展示的那样)为 pickling/unpickling 方法提供了巧妙的解决方案困境。通过使用 copy_reg,Bethard 的方法使多处理能够有效处理绑定方法,从而实现任务的无缝并行执行。
以上是为什么我无法在 Python 多处理中 Pickle 实例方法,以及如何修复'Can't pickle”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!