11

私はPythonでWebアプリケーションを作成していますが、私はFlask、web.pyなどをまだ使用したいのかどうかは決めていません。ライブでプロファイルを実行できるようにしたい応用。Pythonのパフォーマンスを測定する

パフォーマンス測定を行うために計測を実装する方法については、datetime.now()のどこでも多くの印刷を行うのに手間がかかりません。

良い測定ができるようにPythonアプリケーションをインスツルメント化する最良の方法は何ですか?私はStackoverflowチームmvc-mini-profilerに似た何かを探していると思います。

+3

http://docs.python.org/library/profile.html – geoffspear

+0

私は実際には、個々の機能のプロファイリングが標準的なプロファイルが示唆しているように行われたという事実を気に入っていません。アプリケーションがある時点で終了すると思われる場合は、ほとんどの場合役に立ちます。私はそれがデコレータでどのようにエレガントに行えるのかを見ています。だから多分いくつかのテストを書く価値があります。 – Simon

答えて

6

あなたは単にPythonのが付属していますcProfileツールを実行できます。

もちろん
python -m cProfile script.py 

、あなたがテストしたいコードの部分を実行しますscript.pyファイルを作成する必要があります。単体テストがあれば、それを使うこともできます。

それとも使用をカウス:

import cProfile 
cProfile.run('foo()') 

fooエントリポイントからそれをプロファイルします。

+0

プロファイラで関数を "ラップする"のではなく、関数内にプロファイラコードを置くのが本当に好きです。また、アプリケーションの一部でプロファイリングをオンにするのが難しくなりませんか? – Simon

+0

私は標準プロファイラの使用を躊躇していますが、これは正解ですが、少し修正しました。誰かがこれを書きました:http://mg.pov.lt/profilehooks/これはあなたがプロファイルしたい機能にデコレータを加えることを可能にします。 Stackoverflow mvc profilerのようなものはすべて集められないので、完璧ではありませんが、それはもう少し一般的なものがあることの代償だと思います。 – Simon

+0

コメントをいただきありがとうございます、私はprofilehooksについて知りませんでした。歓声 – rafalotufo

4

アミールSalihefendicは、このブログの記事で説明されて短い(150 LOC)RequestProfilerを、書いた:

私はそれを試していないが、それはWSGIミドルウェアであるため、それはいくらかプラグ可能でなければならない。

+0

おそらく少し限られたもので、データベースやmemcacheのクエリをどのように管理しているのか分かりませんが、ボトルネックを見つけるための素早い方法のようです。 – Simon

+0

私は自分自身のソースを見ていない - 私は著者を信頼する;)しかし、私はこのトピックに自分自身が興味を持っているので、他の答えがこの質問に表示されることを願っています(多分質問のタイトルは、 WSGIプロファイリング)。 – miku

+0

WSGIプロファイリングのためのものではありませんでした。私は実際にはWSGIのみのソリューションを気にしません。ウェブと一般のアプリケーションに同じツールを使用することはできません。 – Simon

0

汎用ウェブアプリケーションパフォーマンスツール(httpperfなど)を使用できます。これは外部クライアントを使用して動作し、標準インタフェース(HTTP)に対して動作するため、あらゆるフレームワークで動作します。したがって、完全なスタックのパフォーマンスをテストします。

+0

しかし、時間が費やされる場所はわかりません。ちょうど与えられたhttpクエリが遅いです。 – Simon

+0

しかし、あなたがしたいことを暗示していると思われるフレームワークのパフォーマンスを比較するのに役立ちます。それ以外の場合は、何らかの理由で実際に使用しないと言っているプロファイリングツールを使用できます。 – Keith

+0

ウェブフレームの作品について私が誤解したことは、「あらゆるフレームワークをサポートするものがほしい」という意味でした。私は標準のPythonプロファイラを使用したくないのです。なぜなら、それは実動システムで絶えず実行したいもののようには見えませんが、展開する前にパフォーマンスを測定するために使用するものです。 – Simon

0

New Relicの無料モニタリングシステムを使用してください。サーバーにエージェントをインストールし、フラスコ .pyファイルを指すだけです。適切なエージェント設定でアプリケーションを実行すると、APMと呼ばれるNew Relicのオンラインダッシュボードを参照して、アプリケーションメトリックの表示を開始します。 デフォルトでは、アプリケーションのスループット(QPS/RPM)、アプリの応答時間、上位トランザクション、エラー率、エラースタックトレース(500エラーの場合)、外部サービスへの呼び出しなどのグラフが表示されます。システムの統計情報も監視してください。

関連する問題