Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中持久化类的实例_Python_Python 3.x_Object Persistence - Fatal编程技术网

如何在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) 是的

在Python中,有没有办法将类的实例持久化到内存或文件系统中?我可以用
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:#句柄文件不在那里
)。