Ho due grandi file di testo (~ 100 GB) che devono essere ripetuti simultaneamente.zip() alternativa per iterare attraverso due iterables
Zip funziona bene per i file più piccoli, ma ho scoperto che in realtà sta facendo un elenco di linee dai miei due file. Ciò significa che ogni riga viene archiviata nella memoria. Non ho bisogno di fare nulla con le linee più di una volta.
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.
Esiste un'alternativa a zip() che agisce come un generatore che mi permetterà di scorrere questi due file senza l'utilizzo> 200 GB di ram?
... in realtà, so di un modo, ma non sembra molto pitone - while line1: line1 = handle1.readline(); line2 = handle2.readline(); fai qualcosa con line1 e line2 ... –
Parlando di ambienti con limiti di memoria potresti trovare questo interessante http://neopythonic.blogspot.com/2008/10/sorting-million-32-bit-integers-in-2mb.html –