使用python读取大文件
2024-08-21 04:35:21
python中读取数据的时候有几种方法,无非是read,readline,readlings和xreadlines几种方法,在几种方法中,read和xreadlines可以作为迭代器使用,从而在读取大数据的时候比较有效果.
在测试中,先创建一个大文件,大概1GB左右,使用的程序如下:
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左右,那么结束创建文件。--需要花费好几分钟的时间。
测试代码如下:
#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方法
最新文章
- YunCart电商网站支付宝接口出现500错误
- jQuery发送ajax请求
- IOS—UITextFiled控件详解
- 关于64位windows2003 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0” 的问题
- Find the Clones(字典树)
- jQuery 遍历each()的使用方法
- (转)inux Read系统调用
- GotGitHub — GotGitHub
- PAT (Advanced Level) 1017. Queueing at Bank (25)
- object 类 toString() 和 equals() 的覆写
- Maven的下载,安装,配置,测试,初识
- Unity Shader入门教程(二)最基本的Diffuse和Normal样例
- css系列教程1-选择器全解
- awk 里的substr()
- tomcat集群实现源码级别剖析
- 利用ngnix解决跨域问题
- CodeForces 450B Jzzhu and Sequences (矩阵优化)
- html5 js 游戏的一篇博客 貌似不错
- select()函数用法三之poll函数
- Bootstrap and Angular
热门文章
- codefroce385E矩阵快速幂
- DBMS_LOB的简单用法以及释放DBMS_LOB生成的临时CLOB内存
- OATable中column栏位数据居中的实现方法及代码
- 无线基站侧的信令风暴根因——频繁的释放和连接RRC产生大量信令、设备移动导致小区重选信令增加、寻呼信令多
- Use appropriate component from RM component palette
- translate函数
- python-基础-时间日期处理小结(datetime模块)
- Linux C 数据结构 ->;单向链表<;-(~千金散尽还复来~)
- Vue2.0 less全局配置
- 6-3 Add Two Polynomials(20 分)