python pickle存储、读取大数据量列表、字典数据的方法


Posted in Python onJuly 07, 2019

先给大家介绍下python pickle存储、读取大数据量列表、字典的数据

针对于数据量比较大的列表、字典,可以采用将其加工为数据包来调用,减小文件大小

#列表
  #存储
  list1 = [123,'xiaopingguo',54,[90,78]]
  list_file = open('list1.pickle','wb')
  pickle.dump(list1,list_file)
  list_file.close()
 
  #读取
  list_file = open('list1.pickle','rb')
  list2 = pickle.load(list_file)
  print(list2)
 
#字典
  #存储
  list3 = {'12': 123, '23': 'xiaopingguo', '34': 54, '45': [90, 78]}
  list3_file = open('list3.pickle', 'wb')
  pickle.dump(list3, list3_file)
  list3_file.close()
  # # 读取
  list3_file = open('list3.pickle', 'rb')
  list3 = pickle.load(list3_file)
  print(list3)

  print(list3['23']

ps:下面看下python 利用pickle存大数据

最近在处理一份数据,有一个巨大的、字典型的中间变量,由于今后会持久、高频地使用,因此我考虑将其保存成类似于matlab的.mat格式的数据,方便以后随时读取。

理所当然地会想到利用pickle来保存数据,因为这是在python环境下最常用也最简单的存储数据的方式。
python存储数据的方法有很多,最常用的做法就是利用pickle模块,当然还有其他做法,比如存成json、txt等格式。至于

pandas、h5等方式的另说哈~

pickle模块介绍

pickle模块实现了用于序列化和反序列化python对象结构的二进制协议。 序列化操作"pickling"是将python对象层次结构转换为字节流的过程,反序列化操作 "unpickling"则是将字节流转换回对象层次结构。

不得不提到的是,pickle是python所独有的,因此非python程序可能无法重构pickle对象。在工作中,我就遇到一个问题,就是我用sklearn训练得到的机器学习模型,用pickle保存下来后,工程方面的同事是没法用java调用这个模型的,一个临时的方法是有位同事读pickle源码,自己用java一步步反序列化回来,佩服佩服。

pickle使用技巧

对于最简单的代码,使用 dump() 和 load() 函数便足够了。

import pickle
a = 1
# 保存
with open('data.pickle', 'wb') as f:
  pickle.dump(data, f)
# 读取
with open('data.pickle', 'rb') as f:
  b = pickle.load(f)

但如果你读过pickle的说明文档的话,会发现有个参数叫做protocol。参数protocol代表了序列化模式(pickle协议),在python2.X版本默认值为0,在python3.X本默认值为3。简而言之,不同的python版本对应着不同的最高协议,同时protocol值越大,代表了所用的协议版本越高。如图所示,

那么修改protocol会有什么影响呢?protocol值越大,dump的速度越快,并且支持的数据类型更多,保存下来的文件占用空间更小,同时也带来一些其他优化,例如在python3.4中,协议版本4新支持对非常大的数据进行序列化。因此可以的话,请选择最高协议版本作为protocol参数的值,即设protocol=pickle.HIGHEST_PROTOCOL即可。

那么,上面的那段代码可以改成:

import pickle
a = 1
# 保存
with open('data.pickle', 'wb') as f:
  pickle.dump(data, f, protocol=pickle.HIGHEST_PROTOCOL)
# 读取
with open('data.pickle', 'rb') as f:
  b = pickle.load(f)

可能,对于小数据,影响不会很大。

但当你需要对大数据进行序列化的时候,请记得pickle的这个技巧。

总结

以上所述是小编给大家介绍的python pickle存储、读取大数据量列表、字典的数据的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧

Python 相关文章推荐
python写的一个squid访问日志分析的小程序
Sep 17 Python
python如何实现excel数据添加到mongodb
Jul 30 Python
Python中列表元素转为数字的方法分析
Jun 14 Python
Python2随机数列生成器简单实例
Sep 04 Python
Python基于回溯法子集树模板解决马踏棋盘问题示例
Sep 11 Python
python 获取当天凌晨零点的时间戳方法
May 22 Python
实时获取Python的print输出流方法
Jan 07 Python
python破解bilibili滑动验证码登录功能
Sep 11 Python
简单了解python中的与或非运算
Sep 18 Python
Python3 中作为一等对象的函数解析
Dec 11 Python
python如何使用jt400.jar包代码实例
Dec 20 Python
基于Tensorflow:CPU性能分析
Feb 10 Python
python保存字典和读取字典的实例代码
Jul 07 #Python
python 实现创建文件夹和创建日志文件的方法
Jul 07 #Python
python 画二维、三维点之间的线段实现方法
Jul 07 #Python
Python调用百度根据经纬度查询地址的示例代码
Jul 07 #Python
选择Python写网络爬虫的优势和理由
Jul 07 #Python
python和c语言的主要区别总结
Jul 07 #Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
Jul 06 #Python
You might like
Yii学习总结之安装配置
2015/02/22 PHP
PHP MPDF中文乱码的解决方式
2015/12/08 PHP
PHP创建word文档的方法(平台无关)
2016/03/29 PHP
PHP生成图片验证码功能示例
2017/01/12 PHP
php遍历目录下文件并按修改时间排序操作示例
2019/07/12 PHP
JavaScript面向对象(极简主义法minimalist approach)
2012/07/17 Javascript
jQuery filter函数使用方法
2014/05/19 Javascript
jQuery实现视频作为全屏幕背景
2014/12/18 Javascript
javascript日期处理函数,性能优化批处理
2015/09/06 Javascript
AngularJS基础 ng-mousemove 指令简单示例
2016/08/02 Javascript
基于BootStrap与jQuery.validate实现表单提交校验功能
2016/12/22 Javascript
js监听input输入框值的实时变化实例
2017/01/26 Javascript
关于redux-saga中take使用方法详解
2018/02/27 Javascript
JavaScript实现京东购物放大镜和选项卡效果的方法分析
2018/07/05 Javascript
angularJs中跳转到指定的锚点实例($anchorScroll)
2018/08/31 Javascript
跟老齐学Python之一个免费的实验室
2014/09/14 Python
用Python中的__slots__缓存资源以节省内存开销的方法
2015/04/02 Python
Python实现抓取网页生成Excel文件的方法示例
2017/08/05 Python
python3.5 tkinter实现页面跳转
2018/01/30 Python
Python tkinter常用操作代码实例
2020/01/03 Python
python爬虫实现获取下一页代码
2020/03/13 Python
详解python环境安装selenium和手动下载安装selenium的方法
2020/03/17 Python
python简单实现最大似然估计&scipy库的使用详解
2020/04/15 Python
python 获取谷歌浏览器保存的密码
2021/01/06 Python
Python 带星号(* 或 **)的函数参数详解
2021/02/23 Python
CSS3基础(RGBa、text-shadow、box-shadow、border-radius)
2012/11/13 HTML / CSS
土耳其国际性时尚购物网站:Modanisa
2018/01/19 全球购物
医院后勤自我鉴定
2013/10/13 职场文书
实习生求职自荐信
2014/02/07 职场文书
教师求职自荐信
2014/03/09 职场文书
决心书范文
2014/03/11 职场文书
2014年行政执法工作总结
2014/12/11 职场文书
优秀教师申报材料
2014/12/16 职场文书
文明礼仪倡议书
2015/04/28 职场文书
Java Kafka 消费积压监控的示例代码
2021/07/01 Java/Android
Android超详细讲解组件ScrollView的使用
2022/03/31 Java/Android