У меня есть два больших (~ 100 ГБ) текстовых файлов, которые необходимо повторить одновременно.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.
Есть ли альтернатива молнии(), который выступает в качестве генератора, который позволит мне перебирать этих двух файлов без использования> 200GB оперативной памяти?
... на самом деле, я знаю один способ, но он не кажется очень pythonic - while line1: line1 = handle1.readline(); line2 = handle2.readline(); сделать что-то с line1 и line2 ... –
Говоря о средах с ограниченной памятью, вы можете найти это интересное http://neopythonic.blogspot.com/2008/10/sorting-million-32-bit-integers-in-2mb.html –