ファイルIOはCPUサイクルの点で高価です。だから私の最初の考えはデータベースに賛成するだろう。
しかし、「英語辞書」を複数のファイルに分割して、各ファイルにアルファベットの特定の文字で始まる単語が含まれるようにすることもできます(したがって、26個のファイルがあります)。
I want to create a very very large dictionary
と言うときは、dict
(単語をキーとして使用し、値を定義して)dict
に保存されている単語とその定義を持つ英語辞書を意味しますか?あなたが指摘したように、2番目はcPickleで簡単に実装できます。
また、メモリが主な関心事である場合は、使用するファイルの数を再確認する必要があります。dict
を各ファイルに保存する場合、dict
は不要です(私はすべての英語の単語がソートされていると仮定するつもりです)おそらく、あなたのために使用可能なソリューションは、これを行うことであろう大きすぎる
を得る:
- 一つのファイルに英語の言語のすべての単語を取得。
- このような単語がいくつあるかを数え、ファイルのサイズに応じて、表示する数のファイルに分割します。
- さて、これらの小さいファイルは言葉とその意味
が含まれているこれは、このソリューションが有用であるかである:
は、あなたの問題は、特定の単語の定義を検索することであると言います。実行時に、各ファイルの最初の単語を読み込み、探している単語が前のファイルにあるかどうかを判断できます(最後のファイルであるかどうかを確認するにはループカウンタが必要です) 。探している単語がどのファイルにあるかを判断したら、そのファイルを開き、そのファイルの内容をdict
にロードすることができます。
問題の詳細がわからなくても解決策を提示するのは少し難しいです。
「大きい」のサイズはどれくらいですか?主に辞書から読んだり、書くのですか?また、MySQLテーブルにデータを格納する方法もあるかもしれませんが、データの詳細については議論するのが難しいです。データは純粋に数値ですか?そうでなければ、何? – unutbu
ファイルが急速に成長するわけではありませんが、サイズには限界がありませんので、可能な限り効率的に時間の経過とともに任意に大きくなるファイルを格納できるソリューションを探したいと思います。 – Alex