作者Kuster (克斯特)
看板Python
标题[问题] 请问为何我这程式会吃掉过多记忆体?
时间Sun Feb 8 01:37:27 2009
大家好,想请教一个问题,我这段程式为何会在执行的时候
随着执行过程记忆体不断消耗掉?
index = [None] * 4896990
data = [None] * 71242183
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^我先宣告固定大小的List
这时候记忆体大约吃了500MB
print raw_input('ok1:')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^我程式在这边暂停,我确定到此记忆体只吃500MB
current = 1
index[0] = 0
for line in open('SLo.txt'):
line = line.rstrip()
data1 = [int(i) for i in line.split()]
l = len(data1) - 1
index[current] = index[current-1] + l
data[index[current-1]:index[current]] = data1[1:]
current +=1
接着在跑回圈的时候记忆体不断消耗,程式执行过程中多吃掉了1G以上
我的SLo.txt这档案相当大是没错,可是使用for回圈来直接读取档案
会循序读取档案,并不会将档案内容直接载入到记忆体阿?
接着我直接指定一段data的范围,将data1的内容直接覆盖过去
这样也不会消耗掉记忆体阿?
请问到底是哪个部份在消耗记忆体呢?
不知道我观念哪里错误了?
谢谢各位前辈!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.125.2.46