永发信息网

python 读取大文件数据怎么快速读取

答案:1  悬赏:30  手机版
解决时间 2021-03-15 15:26
python 读取大文件数据怎么快速读取
最佳答案
python中读取数据的时候有几种方法,无非是read,readline,readlings和xreadlines几种方法,在几种方法中,read和xreadlines可以作为迭代器使用,从而在读取大数据的时候比较有效果.

在测试中,先创建一个大文件,大概1GB左右,使用的程序如下:

[python] view plaincopyprint?
import os.path
import time
while os.path.getsize('messages') <1000000000:
f = open('messages','a')
f.write('this is a file/n')
f.close()

print 'file create complted'

在这里使用循环判断文件的大小,如果大小在1GB左右,那么结束创建文件。--需要花费好几分钟的时间。

测试代码如下:

[python] view plaincopyprint?
#22s
start_time = time.time()
f = open('messages','r')
for i in f:
end_time = time.time()
print end_time - start_time
break
f.close()

#22s
start_time = time.time()
f = open('messages','r')
for i in f.xreadlines():
end_time = time.time()
print end_time - start_time
break
f.close()

start_time = time.time()
f = open('messages','r')
k= f.readlines()
f.close()
end_time = time.time()
print end_time - start_time

使用迭代器的时候,两者的时间是差不多的,内存消耗也不是很多,使用的时间大概在22秒作用
在使用完全读取文件的时候,使用的时间在40s,并且内存消耗相当严重,大概使用了1G的内存。。

其实,在使用跌倒器的时候,如果进行连续操作,进行print或者其他的操作,内存消耗还是不可避免的,但是内存在那个时候是可以释放的,从而使用迭代器可以节省内存,主要是可以释放。
而在使用直接读取所有数据的时候,数据会保留在内存中,是无法释放这个内存的,从而内存卡死也是有可能的。

在使用的时候,最好是直接使用for i in f的方式来使用,在读取的时候,f本身就是一个迭代器,其实也就是f.read方法
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
额敏县环保局这个地址在什么地方,我要处理点
上古卷轴5巨人为什么不进攻城市或者城市外面
家有老人去世桃木剑怎么放
在武汉想做现货原油,有在武汉的交易所吗?正
含量80%稀释30%怎么算
柯艺儿童摄影在哪里啊,我有事要去这个地方
这份感情我不想要了!
清洗芋儿为什么会手痒?
炒菜没什么味道,该怎么做
新世纪电子在什么地方啊,我要过去处理事情
个位和十位都是99,这个数是什么,加1是什么
一个女人每天都问候我,关心我,想着我,不管多
神墓无错字、乱码 或少错别字 无乱码 无断章
如果贷款诈骗银行是走什么程序
win7怎么去掉以后的网络全部认为是公用网络
推荐资讯
民营企业可以办理石蜡出口许可证吗
宇翔汽车维修中心地址在什么地方,想过去办事
女生怎么能做春梦呢
帽子怎么搭配衣服?
最近搬新家,听朋友建议买了个高清智能机顶盒
小军五金水暖地址在哪,我要去那里办事
下怕冷这个地址在什么地方,我要处理点事
没有人搭理 四字成语
好家规好家训和背景解说分别怎么写?
熄焦废水循环使用难生化污染物积累问题怎样解
顺风快递查询系统920526246837
帮我查找好听的流行歌曲
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?