python中的pickle模块

pickle模块:

它可以序列化对象并保存到磁盘中,并在需要的时候读取出来,任何对象都可以执行序列化操作

那么什么又是序列化呢?

简单来说,序列化就是用来处理对象流的机制。所谓对象流也就是将对象的内容进行流化,流的概念这里不用多说(就是I/O),我们可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间(注:要想将对象传输于网络必须进行流化)!

然而,在对流对象进行读写操作的时候,会遇到一些问题,序列化就是用来解决这些问题的。

下面说明一下,会遇到哪些问题:

如果一个类A含有另一个类B的引用,现在对A、B进行实例化,这时内存中就会分配两个空间,一个存储对象A,一个存储对象B。此时,如果想要将其写入磁盘中的文件,就会由于B中含有A的引用,在写入的过程中,系统会自动复制一份A到B中;同时A自己本身,也会写入一次。这时,恢复文件就会导致出现两个A和一个B。不仅浪费了资源,也会使在对A进行更改时,需要查找到所有的A,都进行过更改,较为繁琐。

而序列化机制的解决方案则是:
1.保存到磁盘的所有对象都获得一个序列号(1, 2, 3等等)
2.当要保存一个对象时,先检查该对象是否被保存了。
3.如果以前保存过,只需写入"与已经保存的具有序列号x的对象相同"的标记,否则,保存该对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值