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 collections模块实例讲解
Apr 07 Python
Python实现简单字典树的方法
Apr 29 Python
简单掌握Python的Collections模块中counter结构的用法
Jul 07 Python
Tornado Web Server框架编写简易Python服务器
Jul 28 Python
在python中实现将一张图片剪切成四份的方法
Dec 05 Python
python实现图片彩色转化为素描
Jan 15 Python
使用python PIL库实现简单验证码的去噪方法步骤
May 10 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
Aug 21 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
Aug 31 Python
Python unittest discover批量执行代码实例
Sep 08 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
Oct 20 Python
Python 实现键盘鼠标按键模拟
Nov 18 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
Windows下的PHP5.0安装配制详解
2006/09/05 PHP
PHP函数eval()介绍和使用示例
2014/08/20 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
2016/01/19 Javascript
JavaScript实现倒计时跳转页面功能【实用】
2016/12/13 Javascript
Vue2.0实现将页面中表格数据导出excel的实例
2017/08/09 Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
2017/12/01 Javascript
微信网页授权并获取用户信息的方法
2018/07/30 Javascript
VUE v-for循环中每个item节点动态绑定不同函数的实例
2018/09/26 Javascript
Vue CLI 2.x搭建vue(目录最全分析)
2019/02/27 Javascript
[16:56]heroes英雄教学 司夜刺客
2014/09/18 DOTA
深入理解python中的select模块
2017/04/23 Python
python模块之time模块(实例讲解)
2017/09/13 Python
Python通过matplotlib绘制动画简单实例
2017/12/13 Python
对python中使用requests模块参数编码的不同处理方法
2018/05/18 Python
python使用Plotly绘图工具绘制水平条形图
2020/03/25 Python
Python通用函数实现数组计算的方法
2019/06/13 Python
详解Python3中setuptools、Pip安装教程
2019/06/18 Python
在Python3 numpy中mean和average的区别详解
2019/08/24 Python
tensorflow使用指定gpu的方法
2020/02/04 Python
Django自定义列表 models字段显示方式
2020/04/03 Python
PyQt5实现画布小程序
2020/05/30 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
2020/10/09 Python
python爬取豆瓣电影排行榜(requests)的示例代码
2021/02/18 Python
突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述
2013/01/31 HTML / CSS
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
Booking.com美国:全球酒店预订网站
2017/04/18 全球购物
美国便宜的横幅和标志印刷在线:Best of Signs
2019/05/29 全球购物
怎样写好自我鉴定
2013/12/04 职场文书
大学班长的职责
2014/01/27 职场文书
迎元旦广播稿
2014/02/22 职场文书
写好自荐信需做到的5要点
2014/03/07 职场文书
社区服务活动总结
2014/05/07 职场文书
企业负责人任命书
2014/06/05 职场文书
数据分析数据库ClickHouse在大数据领域应用实践
2022/04/03 MySQL
python的html标准库
2022/04/29 Python