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

作者:要啥名字 时间:2021-10-01 11:22:51 

先给大家介绍下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存储、读取大数据量列表、字典的数据的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧

来源:https://blog.csdn.net/register_2/article/details/80323859

标签:python,pickle,存储,字典数据
0
投稿

猜你喜欢

  • Python脚本实现Web漏洞扫描工具

    2023-05-01 04:18:50
  • 细数nn.BCELoss与nn.CrossEntropyLoss的区别

    2021-04-16 16:29:28
  • 解决Jstree 选中父节点时被禁用的子节点也会选中的问题

    2023-09-03 06:56:01
  • Python实现格式化输出的实例详解

    2023-03-15 10:01:59
  • 有关Server.Mappath详细接触

    2010-07-07 11:35:00
  • sp_delete_backuphistory

    2008-06-07 13:59:00
  • 教你使用SQL Server数据库进行网络链接

    2009-01-13 13:41:00
  • 对Python信号处理模块signal详解

    2021-08-20 04:06:11
  • 基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解

    2023-04-09 17:28:45
  • PHP实现的微信公众号扫码模拟登录功能示例

    2023-11-22 18:13:08
  • 43个应当避免的Web设计错误

    2007-09-30 12:57:00
  • Tensorflow与RNN、双向LSTM等的踩坑记录及解决

    2021-04-29 21:25:55
  • Python数据分析中Groupby用法之通过字典或Series进行分组的实例

    2023-03-08 12:56:01
  • Pandas 时间序列分析中的resample函数

    2023-12-06 16:38:33
  • 一实用的table内容排序Javascript类库

    2008-11-02 15:03:00
  • SQL Server 2000安装图解教程

    2009-09-09 19:59:00
  • 下拉列表两级连动的新方法(二)

    2009-06-04 18:22:00
  • 如何更改mysql命令下提示信息

    2010-10-25 19:48:00
  • python获取代码运行时间的实例代码

    2023-11-04 02:25:10
  • 利用ASP实现事务处理的方法

    2010-05-11 16:53:00
  • asp之家 网络编程 m.aspxhome.com