在python中,一般可以使用pickle类来进行python对象的序列化,而cPickle提供了一个更快速简单的接口,如python文档所说的:“cPickle -- A faster pickle”。
cPickle可以对任意一种类型的python对象进行序列化操作,比如list,dict,甚至是一个类的对象等。而所谓的序列化,我的粗浅的理解就是为了能够完整的保存并能够完全可逆的恢复。
制作一个类似于Cifar10的数据格式:
X_train = np.asarray(X_train)
dict = {"data":X_train,"labels":y_train}
#protocol =1 高压缩的二进制格式 默认=0 使用ASCII压缩
cPickle.dump(dict,open("data","wb"),protocol=1)
fo = open("data","rb")
data = cPickle.load(fo)
print type(data["data"])
print data["data"]
实测中,protocol改为1后从60M到20M。