首页 > 编程知识 正文

v2使用python上载大文件的简单介绍

时间:2023-12-24 13:45:36 阅读:321762 作者:HVEU

本文目录一览:

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

python用numpy加载超过200M的文本数据就会报内存错误怎么办

尝试过以下几种方法:

1.使用numpy genfromtxt加载,成功读取完了,但数据变形了(2列的数据变一列了...)。看了一下genfromtxt源码,不过也是逐行读取文本并以tuple形式存入一个list中,解决不了根本问题啊。

2.调大python的使用内存。觉得应该是python限制了可用内存,调大点应该有点效果,不过一直不知道有没有这个方法。

3.尝试hadoop。了解一下以后觉得是杀鸡用牛刀了。要处理的数据在几百M到1G这样。

如何用python快速读取几G以上的大文件

如果你没那么大的内存 解决方法有几个:

使用swap 一次性read()读取

系统层面分割大文件为数个小于系统内存的小文件,分别读取

使用python 按数据大小逐块读取,使用完数据即释放该部分内存:

while True:

       chunk_data = file_object.read(chunk_size)

       if not chunk_data:

           break

       yield chunk_data

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。