950 МБ не должно быть слишком много для большинства современных машин, чтобы держать в памяти. Я делал это много раз в программах на Python, и моя машина имеет 4 ГБ физической памяти. Я могу представить себе то же самое с меньшим объемом памяти.
Вы определенно не хотите тратить память, если можете избежать этого. В предыдущем посте упоминалось, что построчно обрабатывали файл и накапливали результат, что является правильным способом сделать это.
Если вы избегаете одновременного чтения всего файла в память, вам нужно беспокоиться только о том, сколько памяти занимает ваш накопленный результат, а не о самом файле. Может быть возможно обрабатывать файлы намного больше, чем тот, который вы упомянули, при условии, что результат, который вы храните в памяти, не станет слишком большим. Если это так, то вы захотите начать сохранение частичных результатов в виде самих файлов, но это не похоже на то, что для этой проблемы требуется это.
Вот, пожалуй, самое простое решение вашей проблемы:
f = open('myfile.txt')
result = {}
for line in f:
word, count = line.split()
result[word] = int(count) + result.get(word, 0)
f.close()
print '\n'.join(result.items())
Если вы работаете в Linux или другой UNIX-подобной ОС, используйте top
, чтобы следить за использованием памяти во время работы программы.