0

重複の可能性:
Python スクリプトをプロファイリングするにはどうすればよいですか?

さまざまな gui を介して連携する複数のパッケージを使用して API を開発しています。パッケージ、モジュール、メソッド、およびクラスが通常の実行でユーザーから取得している呼び出しの量を分析する方法についてゆっくりと考えています。ボトルネックを検出し、ほとんどの作業が必要な場所を見つけることができるかもしれないと考えながら、同様の機能をマージできる場所も確認します。

私はそれを単純な棒グラフのように描いています

ここに画像の説明を入力

各バーは、どの「深さ」に関心があるかに応じて、1 つのメソッド、モジュール、またはパッケージを表し、高さの軸は取得した呼び出しの量です。

現在、似たようなものはありますか、および/またはこれをPythonでどのように実装しますか?

各メソッドの入り口、たとえばデバッグの下に単純なロガーを配置し、図を作成するときにそれらを除外することを考えています。しかし、それは私のコードがより厄介になることを意味し、それらすべてに対してそれを行うことを覚えておく必要があります. 特定のフラグを指定してコンパイルするときに、コンパイル時のデコレータを適用できれば、より簡単になります。それはPythonで可能ですか?

ありがとう

4

2 に答える 2

1

stdlibのtraceモジュールが役立つと思います。

于 2012-11-27T10:29:27.613 に答える
0

単一の関数をプロファイリング/トレースするための PythonDecoratorLibrary に記載されているデコレータがあります。それはあなたが説明したことを実装するためのスタートを切るでしょう。

実際に Python でコンパイルするのではなく、オンザフライで実行されますが、ランタイム フラグに基づいてデコレータの定義を変更して、オンとオフを切り替えることができます。

于 2012-11-27T12:11:37.020 に答える