2017-06-12 6 views
1

十億個(またはそれ以上)のかなり大きな数を格納する方法が必要です。この要素がこの10億個の数字セットに含まれているかどうかを比較的迅速に確認することができます私のPythonセットのサイズが約1,000万エントリを超えると、私のプログラムは遅くなり、正しく動作します。Pythonセットが多すぎるメモリを取る

私はこのセットをより小さなセットに分割しようとしましたが、かなりのサイズのセットを扱うときは、常に異なるセット(cPickle)を保存/ロードするのが非常に遅いです。

私もデータベースを調べましたが、ほとんどのデータベースのメンバーシップテストは、ネイティブのPythonセットよりもはるかに遅いようです。また、私は実際にデータベースが提供する余分な手荷物を必要としません。つまり、非常に大きなセットを構築しているだけです。各エントリまたはその他の魅力的な機能に複数のデータフィールドが必要なくなります。

できるだけ速くメンバーシップテストをして膨大な数のコレクションを保存するための最良の方法はありますか?または、このタスクに適したデータベースがありますか(できればPythonで実装しやすいものが望ましいですか)。または、ストレージからPythonオブジェクトをcPickleよりも格段に高速に格納/取得する方法はありますか?

答えて

1

をチェックアウト、私は同様の問題を持つ人のためsqlite3をお勧めします。大量のアイテムを収集しても非常に高速です。

関連する問題