如何在Python中持久化类的实例
在Python中,有没有办法将类的实例持久化到内存或文件系统中?我可以用如何在Python中持久化类的实例,python,python-3.x,object-persistence,Python,Python 3.x,Object Persistence,在Python中,有没有办法将类的实例持久化到内存或文件系统中?我可以用shelve执行此操作吗 下面这一行是其中的一部分,执行它需要很长时间,我需要缓存它以供下一个程序执行 clf = MultinomialNB().fit(X_train_counts, training_data['targets']) clf的类型: >>> type(clf) <class 'sklearn.naive_bayes.MultinomialNB'> >类型(clf) 是的
shelve
执行此操作吗
下面这一行是其中的一部分,执行它需要很长时间,我需要缓存它以供下一个程序执行
clf = MultinomialNB().fit(X_train_counts, training_data['targets'])
clf的类型
:
>>> type(clf)
<class 'sklearn.naive_bayes.MultinomialNB'>
>类型(clf)
是的,您可以使用shelve
来持久化类的实例<代码>搁置为您提供了一个字典界面,使过程相对透明
在下面,shelve
使用;如果shelve
API不符合您的需要,您可以直接进入该模块
scikit-learn
明确支持pickle
,请参阅:
在培训了scikit学习模型之后,我们希望能够找到一种方法,在不需要再培训的情况下,将模型保留下来供将来使用。下一节给出了如何使用pickle持久化模型的示例
pickle对一些用户定义的对象没有问题吗?@JakobBowyer:没有,没有。Pickle可能在某些类型的对象上有问题,但它不是特定于用户定义的对象。@MartijnPieters:谢谢。我使用
os.path.isfile
检查是否存在要加载的转储文件。这条路对吗?我使用链接中提到的joblib。@hpn:您可以使用os.path.isfile
或使用异常处理(尝试:
,打开(…)
,除了IOError:#句柄文件不在那里
)。