Tengo dos archivos de texto grandes (~ 100 GB) que deben repetirse simultáneamente.zip() alternativa para iterar a través de dos iterables
Zip funciona bien para archivos más pequeños, pero descubrí que en realidad está haciendo una lista de líneas de mis dos archivos. Esto significa que cada línea se almacena en la memoria. No necesito hacer nada con las líneas más de una vez.
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.
¿Existe una alternativa a zip() que actúa como un generador que me permitirá iterar a través de estos dos archivos sin utilizar> 200 GB de RAM?
... en realidad, sé de una sola manera, pero no parece muy pitónico - mientras que la línea 1: línea 1 = handle1.readline(); line2 = handle2.readline(); hacer algo con line1 y line2 ... –
Hablando de entornos con limitaciones de memoria, puede encontrar este interesante http://neopythonic.blogspot.com/2008/10/sorting-million-32-bit-integers-in-2mb.html –