这篇文章主要为大家展示了“python pickle存储、读取大数据量列表、字典数据的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python pickle存储、读取大数据量列表、字典数据的示例分析”这篇文章吧。
创新互联于2013年成立,先为高青等服务建站,高青等地企业,进行企业商务咨询服务。为高青企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。针对于数据量比较大的列表、字典,可以采用将其加工为数据包来调用,减小文件大小
#列表 #存储 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、h6等方式的另说哈~
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存储、读取大数据量列表、字典数据的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联成都网站设计公司行业资讯频道!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。