您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
Python有什么办法可以让程序去遍历比电脑内存大的数据?
数据,内存,段式Python有什么办法可以让程序去遍历比电脑内存大的数据?
发布时间:2019-02-08加入收藏来源:互联网点击:
Python有什么办法可以让程序去遍历比电脑内存大的数据?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
您好,很高兴在这里交流。
具体要看什么样的数据啦,如果是大数据量的Excel数据,Python有天然的数据处理库pandas。
它具备Excel表的一切功能,从多表拼接,合并,查找,替换,到数据透视表,无所不能,特别适合千万级数据记录的大数量的处理。
一切顺利,加油。
回答于 2019-09-11 08:43:50
思路是拆分或分而治之。
比如利用磁盘存储做外排序。如果单台机器磁盘空间或者运算能力不足,可以使用分布式多机运算。
一般来说,把数据按一定规则分成多块,利用磁盘足以满足个人需求。这个需要根据实际需求来划分;比如内存只有1g,需要从长度为2^33的整数数组中找到最大的数,因为内存不足,不能直接在内存中完成,可以考虑“外排序”,将数组数据存为n个文件,从每个文件中找出最大的数,再从各个最大的数中找出最终的最大数,如果熟悉算法,此问题可以借用二叉堆来处理。
简单的处理思路,可以利用现成方案,比如能处理大数据的数据库或框架来完成(MongoDB,Cassandra,Hbase等)。
复杂的处理,可能需要特定算法和各种设施的配合。
当然,如果只是为了临时解决问题,可以不修改代码,仅靠增加虚拟内存来简单粗暴直接地解决问题。
回答于 2019-09-11 08:43:50
可以采用分段式来对数据进行读取和分析,之后在进行整合。
我举一个简单的例子,我要复制一个大文件,我不能都将他们读取到内存中,于是我分段式进行读取和写入。
因为我也在学习python,如果未能解决您的问题,请勿见怪。
size=100*1024*1024#单次获取的尺寸 100*1024*1024=100MBwith open('CAD2016_64bit.zip', 'rb') as paer_reasd: with open('CAD2016_64bit1.zip','ab') as paer_wirte: x=1 while True: data = paer_reasd.read(size) if not data : break paer_wirte.write(data) print("%s写入完毕"%x) x+=1下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |