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方法

最新文章

  1. YunCart电商网站支付宝接口出现500错误
  2. jQuery发送ajax请求
  3. IOS—UITextFiled控件详解
  4. 关于64位windows2003 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0” 的问题
  5. Find the Clones(字典树)
  6. jQuery 遍历each()的使用方法
  7. (转)inux Read系统调用
  8. GotGitHub — GotGitHub
  9. PAT (Advanced Level) 1017. Queueing at Bank (25)
  10. object 类 toString() 和 equals() 的覆写
  11. Maven的下载,安装,配置,测试,初识
  12. Unity Shader入门教程(二)最基本的Diffuse和Normal样例
  13. css系列教程1-选择器全解
  14. awk 里的substr()
  15. tomcat集群实现源码级别剖析
  16. 利用ngnix解决跨域问题
  17. CodeForces 450B Jzzhu and Sequences (矩阵优化)
  18. html5 js 游戏的一篇博客 貌似不错
  19. select()函数用法三之poll函数
  20. Bootstrap and Angular

热门文章

  1. codefroce385E矩阵快速幂
  2. DBMS_LOB的简单用法以及释放DBMS_LOB生成的临时CLOB内存
  3. OATable中column栏位数据居中的实现方法及代码
  4. 无线基站侧的信令风暴根因——频繁的释放和连接RRC产生大量信令、设备移动导致小区重选信令增加、寻呼信令多
  5. Use appropriate component from RM component palette
  6. translate函数
  7. python-基础-时间日期处理小结(datetime模块)
  8. Linux C 数据结构 -&gt;单向链表&lt;-(~千金散尽还复来~)
  9. Vue2.0 less全局配置
  10. 6-3 Add Two Polynomials(20 分)