【发布时间】:2018-08-22 13:41:28
【问题描述】:
有没有办法使用 pickle 保存和加载整个命名空间,让我可以执行以下操作:
import pickle
import numpy as np
a = 1
# other arbitrary code
pickle.dump(namespace,open('my_namespace.p','wb')
允许打开一个新的 python 提示并执行以下代码:
import pickle
namespace.update(pickle.load(open('my_namespace.p','rb'))
print(np.array(a)+1)
>>2
# using the rest of the namespace
【问题讨论】:
-
这不太可能正常工作,因为您的命名空间很容易包含不可腌制的对象。有一个扩展的 pickle 替代品叫做 dill (pypi.org/project/dill),它列出了“保存和加载 python 解释器会话”作为它的功能之一,尽管我没有使用它的经验。
-
namespace是什么意思? -
我想知道你想在这里实现什么?为什么要腌制整个模块(除非我弄错了 Python 中没有命名空间这样的概念)?
-
这个想法是能够保存具有所有变量和导入的代码的某个状态,以便进入和重新进入相同的状态进行实验。也只是想进一步了解python环境。