Ich habe zwei große (~ 100 GB) Textdateien, die gleichzeitig durchlaufen werden müssen.zip() Alternative zum Iterieren durch zwei Iterables
Zip funktioniert gut für kleinere Dateien, aber ich fand heraus, dass es tatsächlich eine Liste von Zeilen aus meinen beiden Dateien erstellt. Dies bedeutet, dass jede Zeile im Speicher gespeichert wird. Ich brauche nichts mehr mit den Zeilen zu tun.
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.
Gibt es eine Alternative zu zip(), der als Generator wirkt, die mich ohne> 200 GB RAM durch diese beiden Dateien zu durchlaufen können?
... tatsächlich, ich weiß von einer Möglichkeit, aber es scheint nicht sehr Pythonic - während line1: line1 = handle1.readline(); line2 = handle2.readline(); mach etwas mit line1 und line2 ... –
Apropos Umgebungen mit eingeschränktem Speicher, die du vielleicht interessant findest http://neopythonic.blogspot.com/2008/10/sorting-million-32-bit-integers-in-2mb.html –