0

非常に大きなデータのファイルから入力を取得し、そのファイルに対していくつかの簡単な処理を実行してから、棚の辞書形式で保存するコードを作成しました。処理するエントリが4,100万あります。しかし、棚のdictに3500万のエントリを書き込んだ後、パフォーマンスが突然低下し、最終的には完全に停止します。これを回避するために私ができることはありますか?

私のデータはTwitterにあり、ユーザーの画面名をIDにマッピングしています。そのようです:

Jack 12
Mary 13
Bob 15

これらのそれぞれに名前ですばやくアクセスする必要があります。のように:私がそれを与えるとき、my_dict[Jack]それは戻ります12

4

1 に答える 1

1

より低レベルのものを使用することを検討してください。残念ながら、シェルフのパフォーマンスはかなり低くなる可能性があります。しかし、これはあなたが見ている減速を説明するものではありません。

多くのディスクベースのインデックスでは、予想されるサイズで初期化できると便利なので、その場で再編成する必要はありませんこれは、さまざまなライブラリのディスク上のハッシュテーブルのパフォーマンスに大きな影響を与えることでわかりました

実際の目標については、以下をご覧ください。

http://docs.python.org/library/persistence.html

特にgdbm, dbhash, bsddb, dumbdbmsqlite3モジュール。

sqlite3おそらく最速ではありませんが、最も使いやすいものです。結局のところ、コマンドラインSQLクライアントがあります。特にデータサイズに合わせて同様のパラメータをbsddb調整する場合は、おそらくより高速です。nelemまた、言語バインディングもたくさんあります。おそらくsqliteよりも多いでしょう。

このサイズに最適化できるように、初期サイズが4,100万のデータベースを作成してみてください。

于 2012-07-18T10:43:34.163 に答える