Python pickle模块和joblib模块浅析
来源:互联网 发布:中科院数据云 编辑:程序博客网 时间:2024/06/07 18:25
在Python中,如果希望透明地存储对象,而不丢失其身份和类型等信息,则需要某种形式的对象序列化,这是一个将任意复杂的对象转成对象的文本和二进制表示的过程。同样,必须能够将对象经过序列化后的形式恢复到原来的对象。这种序列化的过程称为pickle,可以将对象pickle成字符串、磁盘上的文件或者任何类似于文件的对象;反序列化的过程就是将这些字符串、文件或任何类似于文件的对象unpickle成原来的对象。
pickle接口
pickle模块提供了以下函数对:dumps(object)返回一个字符串,它包含了一个pickle格式的对象;loads(string)返回包含在pickle字符串中的对象;dump(object,file)将对象写到文件,这个文件可以是实际的物理文件,也可以是类似于文件的对象,这个对象具有write()方法,可以接受单个的字符串参数;load(file)返回包含在pickle文件中对象。
缺省情况下,dumps()和dump()使用可打印的ASCII表示来创建pickle。两者都有一个final参数,这个参数是可选的,若这个参数为True,则该参数指定用更快更小的二进制表示来创建pickle。loads()和load()则会自动检测pickle是二进制格式还是文本格式。在实际使用复杂对象的系统中,使用二进制格式可以在大小和速度方面带来显著的改进。
下面看一个对象保存为一个字符串的例子:
>>> import pickle>>> a1 = ("pickle",123,[4,5,6],{'A':1,'B':2})>>> p1 = pickle.dumps(a1)>>> a2 = pickle.loads(p1)
如果用更高效 的二进制来存储:
>>> import pickle>>> a1 = ("pickle",123,[4,5,6],{'A':1,'B':2})>>> p1 = pickle.dumps(a1,True)>>> a2 = pickle.loads(p1)
也可以将对象保存在磁盘文件中:
>>> import pickle>>> a1 = ("pickle",123,[4,5,6],{'A':1,'B':2})>>> with open('text.txt','wb') as file:>>> pickle.dump(a,file)>>> with open('text.txt','rb') as file2:>>> a2 = pickle.load(file2)
cPickle
值得一提的是,pickle 模块及其同类模块 cPickle 向 Python 提供了 pickle 支持。后者是用 C 编码的,它具有更好的性能,对于大多数应用程序,推荐使用该模块。
joblib
这里补充说一下joblib库,这个库是由scikit-learn外带的,scikit-learn库是机器学习的一个库,研究机器学习的童鞋都知道。引入joblib库也很简单,前提是安装了scikit-learn库:
>>> import sklearn>>> from sklearn.externals import joblib
对于大数据而言,joblib比pickle更加高效,但是joblib只能将对象存储在磁盘文件中,不能保存为字符串。
参考文献(该参考文献中博主讲的非常透彻):
http://www.cnblogs.com/cobbliu/archive/2012/09/04/2670178.html
- Python pickle模块和joblib模块浅析
- sklearn模型保存(pickle模块和joblib模块)
- sklearn学习笔记(一)——模型保存(pickle模块和joblib模块)
- python模块 - pickle模块
- python pickle模块 json模块
- python-pickle模块
- Python pickle模块学习
- pickle模块, python
- 【Python】pickle模块
- python pickle模块学习
- python pickle模块
- Python pickle模块学习
- Python的pickle模块
- [笔记]python pickle模块
- python pickle模块
- Python模块之pickle
- python pickle, cPickle 模块
- python pickle模块
- 04-树5 Root of AVL Tree (25分)
- 如何在Word2007中实现目录自动生成
- 获取联系人头像
- 《谷歌和亚马逊如何做产品》读书笔记之十二:胜在从容
- 136. Single Number
- Python pickle模块和joblib模块浅析
- 程序优化
- 《机器学习&&深度学习》 视频课程资源百度云下载
- 725
- gdfzoj #549 Homework of Politics(SG函数+快速幂)
- 宏与函数哪家强?
- Quicksort(int*,int,int) //快速搜索
- MQTT客户端JAVA代码----fusesource mqtt-client
- va_start可变参数函数