このディレクトリの下のファイル数が数千万になると予想される場合、特定のルート ディレクトリの下にファイル パスのリスト/リストを作成する必要があります。
これを行うための適切で効率的な方法は何でしょうか?
現在、os.walk マルチスレッドを実行する python スクリプトを実行しています。
必要なものを達成するためのより良い方法はありますか?
ディレクトリは nfs マウントされたドライブであることに注意してください。
os.walkはジェネレーター関数のようです:
>>> import os
>>> os.walk(".")
<generator object walk at 0x100f32f00>
あなたの場合、それが良い候補になる理由.
マルチスレッド ソリューションはおそらくパフォーマンス上の利点をもたらさないため、より優れた並列 Python ライブラリ(組み込みのmultiprocessingなど) に変換することをお勧めします。
プロセスを生成する分割ジョブ アルゴリズムは、おそらくシステムの最も重要な部分であり、慎重に調整する必要があります。
ディレクトリはリモート システム上にあるため、リモート システムでスクリプトを実行する方が確実に高速であり、リモート アプリのサウンドも合理的です。
@javadeveloper が提案したように、ソリューションをテストすることもできます: OS リスト ディレクトリ関数 (ls/find/dir) を呼び出す + シェル言語 (bash、DOS) でスクリプトを作成するか、出力をファイル/ストリームにリダイレクト + スクリプト言語 (python など) で解析する)。