使用python读取大文件
2016-05-16 14:42
387 查看
原文链接:https://www.geek-share.com/detail/2674380921.html
在这里使用循环判断文件的大小,如果大小在1GB左右,那么结束创建文件。--需要花费好几分钟的时间。
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方法
转载于:https://www.cnblogs.com/kellyseeme/p/5525022.html
相关文章推荐
- 使用Python读取和写入mp3文件的id3v1信息
- dbf文件使用python读取程序
- python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
- 如何使用Python3读取配置文件(ini)
- python中使用文件的读取编码问题和简单正则使用(二)
- 使用python读取pdf文件时,已经安装了pdfminer3k,为什么运行后显示“ModuleNotFoubdError:no module named 'pdfminer.pdfparser' ”
- 【新手入门】Python下不喜欢使用ConfigParser去读取配置文件的Java developer
- 使用python读取数据科学最常用的文件格式
- python3使用pickle读取文件提示TypeError或者UnicodeDecodeError的解决办法
- 如何使用Python读取大文件
- python中多进程及multiprocessing进程池使用——批量读取excel文件
- 使用python读取csv文件快速插入数据库的实例
- Python读取UTF-8编码文件并使用命令行执行时输出结果的问题
- python使用h5py读取mat文件数据
- 使用python读取大文件
- Python使用defaultdict读取文件各列的方法
- Python3--文件读取、写入、追加及seek()方法的使用
- Python使用pandas读取Excel文件数据和预处理小案例
- Python3 读取和写入excel xlsx文件 使用openpyxl
- 使用python读取txt文件的内容,并删除重复的行数方法