私はPythonスクリプトを使用して、指定されたディレクトリを再帰的に処理し、見つかった各ファイルをチェックサムします。次に、すべてのファイルパスとそのmd5チェックサムを一覧表示するログファイルを書き込みます。Pythonのマルチスレッド化MD5チェックサム
これは、15,000個のファイルでそれぞれ50,000個のファイルが処理されるまでに時間がかかります。しかし、私のコンピュータは、実際に使用しているよりもはるかに多くのリソースを利用できます。スクリプトがより多くのリソースを使用してより速く実行できるように、私のアプローチを調整するにはどうすればよいですか?
たとえば、ファイルリストを3番目に分割し、それぞれのスレッドを実行して3xランタイムを与えることはできますか?
私はスレッディングにはあまり慣れていません。ここで
は私のシーケンシャルMD5ループのコードは次のとおりです。事前にあなたの助けを
for (root, dirs, files) in os.walk(root_path):
for filename in files:
file_path = root + "/" + filename
md5_pairs.append([file_path, md5file(file_path, 128)])
ありがとう!この種の仕事のために
最も単純な方法は、pythonスクリプトのインスタンスを個別に起動することです。各インスタンスにroot_pathのサブツリーが与えられます。 – TJD
最適化を実行する前にまずボトルネックがどこにあるかを調べることをお勧めします。たとえば、MD5がディスクからファイルを読み込むよりも大幅に少ない場合は、スピードアップの点であまり期待しないでください。 – SquareRootOfTwentyThree
これは素晴らしい点です。シンプルな読み取りとチェックサムのベンチマークを行い、チェックサムはランタイムに約10%しか追加しませんでした。当社のファイバー接続SANは8Gb/sで読み取ります。私はそれらのファイルをより速く読むことができると思うでしょうか?合計7 GBの600ファイルを読み込むには、88秒かかります。 – Jamie