这是我之前提出的一个问题的后续:Loading functions in pickle file that uses class wrapper,我想在类 wrapper 下腌制一个函数字典,但类 wrapper 模块无法加载。
我已经解决了这个问题,dill
而不是pickle
:
func_dict = lowess_record()
wanted = ['func_dict', 'Interp1dPicklable', 'PolyValPicklable', 'dill', '__builtins__', 'wanted']
for name in globals().keys():
if name not in wanted:
del globals()[name]
del globals().wanted
with open('./func_dict.p', 'wb') as f:
dill.dump(globals(), f)
我从 中删除了一些不必要的变量(涉及从数据创建 func_dict)globals()
,它们不是必需的,因为我只想使用 func_dict。
现在,当我使用以下方法加载腌制文件时:
func_dict_loaded = dill.load(open("./func_dict.p", "rb"))
我得到:
<In> func_dict_loaded.keys()
<Out> ['_dh', '__', 'dill', '_15', '__builtin__', '_i32', '_30', '_16', '_i15', quit', '_34', '_i11', '_i9', '_i8', '_i7', '_i6', '_i5', '_i4', '_i3', '_i2', _i1', '__package__', 'exit', 'get_ipython', '_i', '_i29', '_i26', '_i17', _i24', _i14', '_i22', '__doc__', '_i20', '_i16', '_i21', '_18', '_11', '_i34', __builtins__', '_ih', '_i28', 'sys', '_20', '_i27', '__name__', '___', '_i33', _', '_sh', '_i25', '_29', '_32', '_22', 'func_dict_loaded', '_i23', '_i13', _i12', '_iii', '_i10', '_13', '_12', '_ii', 'In', '_i31', '_i30', '_i19', _i18', _i35', '_oh', 'Out']
无法访问函数字典!我需要做什么才能获得预期的输出?