您的位置:首页 > 编程语言 > Python开发

Python序列化模块pickle

2017-02-11 16:24 351 查看
序列化的应用举例:

1.在磁盘上保存当前程序的状态以便重启时能重新加载;

2.多用户或者分布式系统中数据结构的网络传输时,可将数据序列化和后发送给可信的网络对端,接受者反序列化后可恢复相同的对象;

3.session和cache存储等。

序列化:

将内存中的数据结构在不丢失其身份和类型信息的情况下转换成对象的文本和二进制表示。序列化的对象经过反序列化能恢复为原有对象。

特点:

pickle较通用,其c语言实现:cPickle性能很好,与pickle相似,但cPickle不能被继承。

序列化函数:dump()

反序列化函数:load()

用法:

pickle.dump(obj, file[, protocol]) # 序列化数据到一个文件描述符

load(file) # 将文件中的对象反序列化为原对象

示例:

import cPickle as pickle

my_data = {"name" : "Python", "type" : "Language", "version" : "2.7.5"}

fp = open("picklefile.dat", "wb")  #打开要写入的文件

pickle.dump(my_data,  fp)           #使用dump进行序列化

fp.close()

fp =open("picklefile.dat", "rb")

out = pickle.load(fp)                    # 反序列化

fp.close()

pickle能够自动维护对象间的引用,如果一个对象上存在多个引用,pickle后不会改变对相间的引用,并能自动处理循环和递归引用

a = ['a','b']

b=a

b.append('c')

p = pickle.dumps((a,b))

a1,b1 = pickle.loads(p)

a1

['a','b','c']

b1

['a','b','c']

a1.append('d')

b1

['a','b','c','d']

参考:

《改善python程序的91个建议》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python pickle 序列化