【发布时间】:2018-11-16 17:47:37
【问题描述】:
这是一个示例代码,其中FLAG 是一个全局变量。方法A.func 对我来说是一个黑盒,所以我不知道它在序列化之前调用了FLAG。
import dill as pickle
FLAG = 100
class A:
def func(self):
print FLAG * 10
a = A()
dump = pickle.dumps(a.func)
del FLAG
foo = pickle.loads(dump) <-- fail here "NameError: global name 'FLAG' is not defined"
foo()
在相关问题中:
- Serialize a python function with dependencies
- How to pickle a python function with its dependencies?
最实用的解决方案是使用cloudpickle。但似乎dill 比cloudpickle 更健壮。所以我想坚持dill 或其他成熟的pickler。
如有必要,我不介意自己修改一些dill 代码。
提前感谢您的帮助:)
【问题讨论】:
标签: python serialization pickle dill