之前,在使用Python开展数据分析的过程中,经常会遇到需要基于同一份中间结果分别做不同维度的分析统计,开始我们做的思路是每次都重新计算,后来发现在TB级别的数据背景下这种操作是非常浪费算力的,考虑到需要做数据序列化、持久化。

在实际应用中也分别使用过pickle、json、shelve三种模块来实现数据序列化。接下来与大家分享这三者的具体应用与异同。

简单讲,这三者都可以实现Python大多数对象的序列化(持久化),只是实现和应用的背景有所不同。序列化的好处是把计算处理得到的数据持久化的保存下来,当重复使用时直接通过load把数据加载到内存就可以了,避免了中间结果的重复计算,或者数据格式的重复转换。

cPickle模块

在Python中,一般使用pickle类来进行python对象的序列化,同时cPickle(C语言编译版本)提供了一个更快速简单的实现,如官方文档所说的:"cPickle – A faster pickle",其速度大概是pickle的1000倍,因此在大多数应用程序中通常优先使用cPickle (cPickle 除了不能被继承之外,它与pickle使用基本上区别不大)。

cPickle可以对任意一种类型的Python对象进行序列化操作,比如list,dict,甚至是一个类的对象等。

在cPickle中,我们使用下面方式把数据持久化至文件中:

dump函数—序列化

需要指定两个参数,第一个是需要序列化的python对象名称,第二个是本地的文件,需要使用open函数以"写"模式打开文件。

持久化的data.pickle文件如下:

data.pickle

load函数—反序列化

载入本地文件,加载为Python对象,加载出来的对象无须进行格式转换。如果通过一般写入的方式实现数据的持久化,那么在读出数据时,需要额外进行数据类型的转换。

请注意,cPickle是python2 的库,在python3.x版本,改名为pickle。

cPickle的缺点

pickle模块使用的数据格式是Python专用的,并且不同版本不向后兼容,同时也不能被其他语言说识别。

使用pickle存在安全风险,切勿反序列化不受信任或未经身份验证的pickle字节串,比如通过代码获得文件列表,进一步也可以获取文件操作等权限:

因此 pickle 方案不适合用于网络通信,可以改用另一种序列化方式,如JSON。

json模块

json模块我们使用将数据保存到文件中,以及直接读取文件中的数据进行反序列化操作。

python每天八分钟教程_每天八分钟Python基础教程——对象持久化、序列化相关推荐

  1. java web 润乾报表教程_润乾报表开发 基础教程.ppt

    润乾报表开发 --基础教程 主格和附属格 单元格进行扩展的过程中,缺省情况下,相对于其右(下)边的单元格而言,扩展格是主动复制的,被称为其它格(其右/下的格)的主格,而其右(下)的单元格是被动跟随复制 ...

  2. linux pandas教程_这7种Python的全新玩法,你们一定不知道!(附赠Python教程)

    Python第三方模块众多,下面我介绍一些比较实用而又有趣的模块,主要分为爬虫.数据处理.可视化.机器学习.神经网络.股票财经.游戏这7个方面. 主要内容如下: 1.爬虫:相信大部分人都用Python ...

  3. 从头开始学python教程_怎样开始自学Python?

    Python是一个通用编程语言,并很快成为每个自重程序员宝库中的一个必需品. Python中有数不清的Web框架,从基本bai的微小架构到完整的架构,它们自有各自的优点.那么你准备使用它来做一些web ...

  4. python程序不出结果_超详细的Python入门教程,1小时就可以学会

    为什么使用Python 假设我们有这么一项任务:简单测试局域网中的电脑是否连通.这些电脑的ip范围从192.168.0.101到192.168.0.200. 思路:用shell编程.(Linux通常是 ...

  5. python头像教程_微信好友头像全家福详细教程python版

    昨天按照大佬的代码,做了一个微信全家福的图片,后面好多人问我是怎么做的,索性我就出个详细的教程吧,我python也是三脚猫功夫,有不对的地方,还请各位大佬手下留情. 先看看成果吧 微信好友头像全家福详 ...

  6. python学法用法 自动刷分_微信跳一跳python辅助工具刷分教程详解

    随着身边不少小伙伴都加入了微信跳一跳挑战,朋友圈最近都被刷爆了,为了刷分,很多小伙伴都开始开挂了,Github大神wangshub分享了一个针对该游戏的开源项目,那微信跳一跳python怎么刷分呢,下 ...

  7. python学法用法 自动刷分_微信跳一跳python怎么刷分_微信跳一跳python使用教程

    微信跳一跳python怎么刷分?要知道,游戏中这个Python脚本程序可以刷很高的分数,所以接下来小编要为大家介绍下python使用教程! 微信跳一跳python使用教程 工具介绍 Python 2. ...

  8. python学法用法 自动刷分_微信跳一跳python使用教程 微信跳一跳python怎么刷分

    最近,跳一跳,可以说是火爆了微信好友圈,Github大神wangshub分享了一个针对该游戏的开源项目,也就是一个Python脚本程序可以刷很高的分,下面就为大家带来跳一跳python使用教程. 微信 ...

  9. python辅助脚本教程_微信跳一跳python辅助脚本实例分享

    本文主要为大家整理了关于微信跳一跳的辅助脚本内容,这次我们给大家整理的是关于python的脚本内容,一起来学习下. 这段时间微信跳一跳这个游戏非常火爆,但是上分又非常的难,对于程序员来说第一个念头就是 ...

最新文章

  1. VB 6.0中如何访问EXCEL 2007及EXCEL 2010
  2. STM32 SPI难点浅析
  3. 【收藏】Docker安装微信
  4. mvc html validator,ASP.NET MVC实现Validation验证器扩展
  5. 1.4- 定时任务总结之九句箴言
  6. java8新特性(3)--- 函数式接口
  7. win2003服务器 虚拟主机安全配置
  8. 前端开发必备:js中的sort()排序函数
  9. Redis学习总结(12)——Redis常见面试题再总结
  10. Linux 下的 sleep
  11. 两本好书可能改变的我一生——致出版社的一封信!
  12. 用户id oracle设置,Oracle中的架构,用户和功能ID
  13. 美通社企业新闻汇总 | 2019.1.7 | 迈瑞回应毕业生解约事件,温德姆酒店集团正式回归香港市场...
  14. python面板数据模型_面板数据模型选择问题
  15. Android应用去广告方法盘点
  16. win10 c盘压缩卷只能压出一半?或只能压缩出一点空间的完美解决方案
  17. 卸载微软的拼音输入法
  18. 关于element-ui的blur事件失效,select的blur的bug,以及row在@blur延迟的解决
  19. 【VB6|第17期】16进制颜色值与RGB值互相转换(含源码)
  20. 智力题之【老鼠吃毒药问题】

热门文章

  1. Alone in Office
  2. Qt5.9生成dll详细步骤
  3. c#图像灰度化、灰度反转、二值化
  4. 一种新的图像清晰度评价函数
  5. IOS流水布局UICollectionView使用FlowLayout进行自由灵活组合
  6. 大学计算机第三单元测试题及答案,MOOC计算机网络第三单元测验(哈尔滨工业大学)...
  7. html选择文件夹插件,js/jq仿window文件夹框选操作插件
  8. java 远程修改linux服务器文件_linux服务器之间复制文件
  9. 微信小程序通过getUserProfile和wx.login获取后端的token
  10. HTML与CSS基础之子元素的伪类(七)