0

コードを実行するたびに辞書に解析する必要がある約 1000 万行の 100Mb ファイルがあります。このプロセスは信じられないほど遅く、私はそれをスピードアップする方法を探しています. 頭に浮かんだ 1 つの考えは、ファイルを一度解析してから、pickle を使用してディスクに保存することです。これがスピードアップにつながるかどうかはわかりません。

任意の提案をいただければ幸いです。

編集:いくつかのテストを行った後、辞書を作成すると速度が低下するのではないかと心配しています。ピクルス化はかなり速いように見えますが、もっとうまくやってもかまいません。

ラリット

4

2 に答える 2

0

私の経験では、最高のプロトコルを使用している場合でも、 MessagePackは cPickle よりも Python でのデータのダンプ/ロードがはるかに高速でした。

ただし、辞書に 1000 万のエントリがある場合は、コンピューターのメモリの上限に達していないことを確認する必要があります。メモリが不足し、スワップを使用する必要がある場合、プロセスははるかに遅くなります。

于 2012-06-19T15:52:53.257 に答える
0

データの使い方によっては、

  • それを多くの小さなファイルに分割し、必要なものだけをロードします
  • ファイルにインデックスを作成し、遅延ロードします
  • それをデータベースに保存してから、データベースにクエリを実行します

データがどのように見えるか (構造) について、より良いアイデアを教えていただけますか?

データをどのように使用していますか?実際にすべての実行ですべての行を使用していますか? 各実行でサブセットのみを使用する場合、データを事前に並べ替えることができますか?

于 2012-06-19T20:14:17.957 に答える