いくつかのファイルをメモリにロードしようとしています。ファイルには、次の 3 つの形式のいずれかがあります。
- 文字列 TAB int
- 文字列タブフロート
- 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 MB ですが、メモリにロードすると、プロセスは 120 ~ 180 MB のメモリを必要とします。(Python アプリケーション全体が他のデータをメモリにロードすることはありません)。
10 個未満のファイルがありますが、現在数百万行ある 1 つのファイルを除いて、それらのほとんどは約 50 ~ 80k 行で安定しています。
そこで、メモリ消費量を削減するためのテクニック/データ構造をお願いしたいと思います:
- 圧縮技術に関するアドバイスはありますか?
- まだ dict を使用している場合、メモリを減らす方法はありますか? Python dict の Java のように「負荷係数」を設定することは可能ですか?
- 他のデータ構造がある場合は、速度をいくらか犠牲にしてメモリを削減することもできます。それにもかかわらず、これは時間に敏感なアプリケーションであるため、ユーザーがクエリを入力すると、結果を返すのに数秒以上かかることはあまり合理的ではないと思います. これに関しては、Google が Google 翻訳を非常に高速に実行する方法に今でも驚いています。彼らは多くの技術と多くのサーバーの能力を使用しているに違いありません。
どうもありがとうございました。アドバイスをお待ちしております。