python内存消耗为什么那么大_python – 为什么加载这个文件占用这么多内存?

博主尝试在Python中加载和排序一个1.5Gb的大文件,但发现内存使用过高。当加载约10%的行时,内存已使用700Mb,最终达到3.03Gb。解决方案包括使用`readlines()`减少内存开销,并在排序时通过传递函数到`sort()`来避免额外内存消耗。尽管效率不高,但最终实现了文件加载和排序。
摘要由CSDN通过智能技术生成

试图将文件加载到python中.这是一个非常大的文件(1.5Gb),但我有可用的内存,我只想做一次(因此使用python,我只需要对文件进行一次排序,因此python是一个简单的选择).

我的问题是加载此文件会导致大量内存使用.当我将大约10%的行加载到内存中时,Python已经使用了700Mb,这显然太多了.脚本挂起大约50%,使用3.03 Gb的实内存(并缓慢上升).

我知道这不是排序文件最有效的方法(内存方式),但我只是想让它工作,所以我可以继续处理更重要的问题:D所以,下面的python代码导致了什么问题大量内存使用:

print 'Loading file into memory'

input_file = open(input_file_name,'r')

input_file.readline() # Toss out the header

lines = []

totalLines = 31164015.0

currentLine = 0.0

printEvery100000 = 0

for line in input_file:

currentLine += 1.0

lined = line.split('\t')

printEvery100000 += 1

if printEvery100000 == 100000:

print str(currentLine / totalLines)

printEvery100000 = 0;

lines.append( (lined[timestamp_pos].strip(),lined[personID_pos].strip(),lined[x_pos].strip(),lined[y_pos].strip()) )

input_file.close()

print 'Done loading file into memory'

编辑:如果有人不确定,普遍的共识似乎是每个分配的变量会占用越来越多的内存.我在这种情况下“修复”了1)调用readLines(),它仍然加载所有数据,但每行只有一个’string’变量开销.这使用大约1.7Gb加载整个文件.然后,当我调用lines.sort()时,我将一个函数传递给key,该函数在选项卡上分割并返回正确的列值,转换为int.这在计算上是缓慢的,并且总体上是内存密集型的,但它可以工作.今天学到了关于变量分配的大量报道:D

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值