3

Python でディスク容量使用プログラムを作成しており、必要な機能は既にありますが、遅いです。私が分析するファイルシステムは、数百 GB になる可能性があり、多くの深さの重いフォルダーに数千のファイルがあります。

先にリンクされた論文の「分割」レイアウトに基づいたツリー マップでデータを表示しています。レイアウトの作成と解決は、どちらも非常に高速な操作です。 http://www.nada.kth.se/utbildning/grukth/exjobb/rapportlistor/2005/rapporter05/engdahl_bjorn_05033.pdf

os.walk を使用して指定されたパスをたどり、フォルダーとファイルをこのツリー マップにサイズと共に追加します。すべてのファイルのサイズを取得し、それをディクショナリ キャッシュ (キャッシュ [ファイル パス] = サイズ) に格納して、簡単に再度取得できるようにします。os.walk を除いて、これらはすべて高速です。os.walk を単独で実行すると、30 秒以上、場合によっては数分かかることがあります。

構造をこれ以上速く歩かせることはできないことは理解していますが、結果を何らかの方法でキャッシュして、将来的にははるかに高速にしたいと考えています。これは、アプリケーションがツリー マップのナビゲーションを許可し、任意のセクション (フォルダ) をクリックすると、それがツリー マップの「ルート」になるためです。

そのため、「ルート」ノードから開始すると、指定された子にジャンプできるように、階層内の簡単なナビゲーションとともに、任意のファイル/フォルダーに簡単にアクセスできるキャッシュ ソリューションが必要です。任意の深さで、そこから構造内を上 (または下) に移動できます。

データ構造とナビゲーションをツリー マップに組み込みたくはありません。解決策がプログラムのウォーキングとサイジングの部分にあれば最高です. 最終的には、ファイル/フォルダー構造とそのサイズを徒歩で再現するだけで十分です。

この種の構造に適したライブラリはありますか? または、これを自分で書くのはどれほど簡単でしょうか? 私はこれまでこのような構造を使用したことがないので、必要なタイプのアクセス権を持つように作成する最良の方法がわかりません。

4

1 に答える 1

1

Redisを調べましたか?その高速で、Pythonでうまく機能します。また、検索を高速化するためにフォークで開始される複数のスレッド/プロセスについてはどうでしょうか。

redis-py

于 2012-08-02T17:34:55.757 に答える