Это продолжение вопроса, который я ранее задавал: Загрузка функций в файл pickle, который использует оболочку класса, где я хотел выделить словарь функции под оболочками классов, но модуль оболочки класса не смог загрузить.
С тех пор я решил это, используя 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']
Без доступа к словарю функций! Что мне нужно сделать, чтобы получить желаемый результат?