Пытаюсь загрузить в память пару файлов. Файлы имеют любой из следующих 3-х форматов:
- строка TAB целое
- строка TAB с плавающей запятой
- int TAB с плавающей запятой.
Действительно, это файлы статики ngram, на случай, если это поможет с решением. Например:
i_love TAB 10
love_you TAB 12
В настоящее время псевдокод, который я делаю прямо сейчас,
loadData(file):
data = {}
for line in file:
first, second = line.split('\t')
data[first] = int(second) #or float(second)
return data
К моему большому удивлению, при общем размере файлов на диске около 21 мб, при загрузке в память процесс занимает 120 - 180 мб памяти! (все приложение Python не загружает никаких других данных в память).
Файлов меньше 10, большинство из них останутся стабильными на уровне 50-80 тыс. строк, за исключением одного файла, который в настоящее время содержит миллионы строк.
Поэтому я хотел бы попросить технику/структуру данных для уменьшения потребления памяти:
- Любые советы по методам сжатия?
- Если я все еще использую dict, есть ли способ уменьшить память? Можно ли установить «коэффициент нагрузки», как в Java для Python dict?
- Если у вас есть какие-то другие структуры данных, я также готов обменять часть скорости на уменьшение памяти. Тем не менее, это чувствительное ко времени приложение, поэтому после того, как пользователи введут свои запросы, я думаю, что было бы не совсем разумно возвращать результат более чем на несколько секунд. Что касается этого, я все еще поражен тем, как Google удается так быстро выполнять Google Translate: они, должно быть, используют много методов + много мощности серверов?
Большое Вам спасибо. Я с нетерпением жду вашего совета.