Я пытаюсь загрузить несколько папок в память. Файлы имеют один из следующих трех форматов:
- строка TAB int
- строка TAB float
- int TAB float.
Действительно, они являются файлами статистики 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: они должны использовать множество технологий + много возможностей серверов?
Большое спасибо. Я с нетерпением жду вашего совета.