Python序列化---Pickle模块【大量数据的情况下,如何提高Python读写数据的速度?】...

本文介绍了Python的Pickle模块,用于对象序列化和反序列化,提高大数据读写效率。Pickle相比JSON,提供更快的序列化速度,且能保存更多Python数据类型。内容涵盖Pickle的功能、好处、与JSON的比较,以及实例演示。
摘要由CSDN通过智能技术生成

点击上方“潜心的Python小屋”关注我们,第一时间推送优质文章。

前言

大家好,我是潜心。最近在复现2018年阿里提出的CTR预估模型---DIN,关于原生数据的处理以及数据集的构建,因为数据量过于庞大,开源代码使用了Pickle模块。后来查阅相关资料了解后,发现原来是Python标准库中用于数据序列化的模块。在此进行总结记录。

本文约2.5k字,预计阅读10分钟。

Pickle模块---对象序列化

序列化

序列化(serialization)在计算机科学的数据处理中,是指将数据结构或对象状态转换成可取用格式(例如存成文件,存于缓冲,或经由网络中发送),以留待后续在相同或另一台计算机环境中,能恢复原先状态的过程。依照序列化格式重新获取字节的结果时,可以利用它来产生与原始对象相同语义的副本。Python编程核心的序列化机制是pickle标准库。

Pickle---Python序列化

模块 pickle 实现了对一个 Python 对象结构的二进制序列化和反序列化。 "pickling" 是将 Python 对象及其所拥有的层次结构转化为一个字节流的过程,而 "unpickling" 是相反的操作,会将(来自一个 binary file 或者 bytes-like object 的)字节流转化回一个对象层次结构。pickling(和 unpickling)也被称为序列化(和反序列化)。

注:pickle 模块并不安全。只应该对信任的数据进行unpickle操作。构建恶意的 pickle 数据来在解封时执行任意代码是可能的。绝对不要对不信任来源的数据和可能被篡改过的数据进行解封。在处理不信任数据时,更安全的序列化格式如 json更为适合。

Pickle序列化的功能与好处

pickle的功能就是把你上次计算得到的数据保存起来,当你需要使用这些数据时,直接通过load将数据进行恢复,这样的好处有:

  1. 不需要重新去计算得到数据,节省计算机资源;

  2. 可以更好的被内存调用,不需要经过数据格式的转换,提高效率;【直接保存为其他格式,如txt、csv的数据读写速度都不如序列化后的数据(字节流)】

  3. pickle可以保存多个对象。实验中,同一数据集下需要保存的内容不止一种,通过pickle可以全部进行保存到一个.pkl文件。

Pickle与JSON的比较

Pickle 协议和 JSON (JavaScript Object Notation) 间有着本质的不同:

  • JSON 是一个文本序列化格式(它输出 unicode 文本),而 pickle 是一个二进制序列化格式;

  • JSON 是可以阅读的(.json文件可以直接打开),而 pickle 不能(.pickle文件);

  • JSON是可互操作的,在Python系统之外广泛使用,而pickle则是Pytho

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值