我有兩個大(〜100 GB)的文本文件,必須同時迭代。zip()替代迭代通過兩個迭代
Zip適用於較小的文件,但我發現它實際上是從我的兩個文件中創建一個行列表。這意味着每一行都被存儲在內存中。我不需要多次對線路做任何事情。
handle1 = open('filea', 'r'); handle2 = open('fileb', 'r')
for i, j in zip(handle1, handle2):
do something with i and j.
write to an output file.
no need to do anything with i and j after this.
是否有zip()可以充當發電機,讓我通過這兩個文件迭代,而無需使用> 200GB RAM的選擇嗎?
...實際上,我知道一種方式,但它似乎不是pythonic - 而line1:line1 = handle1.readline(); line2 = handle2.readline();用line1和line2做些什麼... –
說到內存受限的環境,你可能會發現這個有趣的內容http://neopythonic.blogspot.com/2008/10/sorting-million-32-bit-integers-in-2mb.html –