這個簡單的聲明:Python的語句使用過量的RAM
zip(xrange(0, 11614321), xrange(0, 11627964))
......吃了我的大部分RAM的。 (> 150 MiB!)爲什麼?
編輯:啊,重新閱讀文檔,我看到zip
返回一個列表,而不是一個迭代。像zip
這樣的返回一個迭代?
的照片放大:我迭代文件數據在兩個大的陣列,以及我正在做的事情等迭代(0端,0端),(0端,1-端)等我不想切片數組,因爲它會導致內存的過度分配。我想我只是迭代索引,但似乎沒有工作,如上所述。整個代碼:
def subsequence_length(data_a, data_b, loc_a, loc_b):
length = 0
for i_a, i_b in zip(xrange(loc_a, len(data_a)), xrange(loc_b, len(data_b))):
if data_a[i_a] == data_b[i_b]:
length += 1
else:
break
return length
@erjang:所以你需要等待一個設定的時間段,然後才能接受回答。現在這段時間已經過期,我接受了nos的回答。在我的其他問題中,我現在每隔一段時間都會看到他們:那些沒有接受答案的人並不是因爲沒有人滿意地回答這個問題。 – Thanatos 2010-10-31 21:26:00
您使用的計算機和操作系統組合是隻有150 MiB的RAM? – martineau 2010-11-01 09:21:51
@martineau:這是一臺Linux筆記本電腦,帶有2個GiB的RAM。那不是重點。只需增加兩個整數即可,甚至不需要千字節,更不用說150MB。 (150 MiB是它在使用之前能夠測量多少,我可以在測量之前測量它的數量,這個特別的聲明實際上是在吞噬我所有的RAM。) – Thanatos 2010-11-02 19:51:42