0

いくつかのフォルダーですべての git リポジトリを見つける必要があります。以前は、 を使用していfind . -type -d -name .gitました。これを Python 3 で書き直してos.walk. 単純な よりもツリーをトラバースするのに時間がかかるようfindです。

どうすればこれをスピードアップできますか?

完全なコードは次のとおりです: old new

4

2 に答える 2

4

SOには多くのスレッドがあり、非常os.walk()に遅いです。

  • scandirに興味があるかもしれません (まだ python3 に適用できるかどうかはわかりません)。
  • ツリー全体を調べて「.git」をフィルタリングする代わりに、上手にglob-moduleを使用してそれらを直接見つけてください。
于 2013-09-02T19:21:15.220 に答える
1

の実装を意味する場合find_repos()、使用os.walk()はおそらく最適ではありません。その理由は、サブディレクトリが見つかったら、それ以上.git深く検索する必要がないからです。独自のディレクトリ トラバーサルを作成してみてください。os.pyがどのように実装されているかについては、ソースを参照してください。速度が遅いwalk理由は、Python で記述されている可能性があります。

新しいソリューションの他の部分について...正規表現をコンパイルしていないことに気付きましたが、詳細を確認していませんでした。

機能を別の Python スクリプトに分離し、timeitモジュールを使用してソリューションを測定し、最適化を試みることをお勧めします。

于 2013-09-03T11:33:45.220 に答える