問題タブ [pstats]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - cProfile ログからの関数呼び出しを無視する
を使用して特定のモジュールの関数呼び出しの頻度を取得できることはわかっていますpstats.print_stats('python_script.py:')
が、一連の関数を含まないプロファイリングされたプログラムで呼び出されたすべての関数の頻度のレポートを出力したいと考えています。
たとえばfunction1
、 、function2
、function3
、およびfunction4
(このリストははるかに大きいと仮定します) があり、 でない限り、各関数が呼び出された回数を出力したいとしますfunction3
。無視する関数のリストを作成し、それをpstats
モジュールとプロファイリングしているファイルに渡すことはできますか?
特に、前述のセットを含まないすべての関数の呼び出し数に関心があります。おそらく、関数の完全なリストを解析してそのセットを無視するスクリプトを作成することもできますが、pstats モジュールにはもっと簡単な方法があると思います。
python - Python: Pstats は fortran ルーチンで費やされた時間を無視しているようです
fortran ルーチンを呼び出す Python コードのプロファイルを作成したいと考えています。私はこの PSTATS に使用しますが、以下の例に示すように、PSTATS は fortran ルーチンに費やす時間を考慮していません。
Fortran モジュール (mod_fortran.f90):
fortran モジュール (test_fortran_pstats.py) を呼び出す Python スクリプト:
プロファイリング統計を出力する Python スクリプト (analyse_pstats.py):
チュートリアル (コンパイルと送信):
結果:
Fortran ルーチンが 10 秒間「スリープ」している間、Pstats は 0.180 秒しかカウントしません。
python - pstats.dump_stats(filename) オフラインで作成されたファイルを分析するにはどうすればよいですか?
私は基本的に次のことを行いました:
これで、「stats.dmp」という名前のファイルがオフラインで保存されました。
pstats を使用してこのファイルを人間が消費するために分析するにはどうすればよいですか?
前もって感謝します。
python - Python で pstats と cProfile を利用する。配列の動作を高速化するには?
これはコードの最初の最適化であり、興奮しています。いくつかの記事を読みましたが、まだいくつか質問があります。
1) まず、以下のコードで時間がかかるのは何ですか? ここは配列だと思います:array.append(len(set(line.split())))。私はPythonのリストがより速く動作することをオンラインで読みましたが、ここではリストを使用していません。これを改善する方法を知っている人はいますか?
2) 他に欠けている改善点はありますか?
3)また、オンラインでは、 for ループがコードを大幅に遅くすると言われています。ここは改善できますか?(Cでコードを書くのが最善だと思いますが、:D)
4) 人々が常に「ncalls」と「tottime」を見ることを提案するのはなぜですか? 私にとっては、「percall」の方が理にかなっています。関数または呼び出しの速度を示します。
5) こちらの正解クラス B で、彼はリストを適用しました。彼は?私にとっては、物事を遅くすると思われる配列とFORループがまだ見られます。 numpy数値配列を成長させる最速の方法
ありがとうございました。
新しい cProfile 結果:
新しいコード:
古い cProfile 結果: 13.195 秒で 551211 関数呼び出し 順序付け: 内部時間
ncalls tottime percall cumtime percall filename:lineno(function) 78744 10.193 0.000 10.193 0.000 {numpy.core.multiarray.array}
古いコード:
python - Flask プロフリング エラー: プロファイルまたは pstat がインストールされていないため、プロファイラーを使用できません
ここの説明に従って、自分の Web サイトでプロファイリング プロセスを実行しようとしていますが、このエラーが発生しました。完全なスタック トレースは次のとおりです。
最初は、これは Windows のエラーの 1 つだと思い、Mac でも同じことを試してみました。同じエラー。
うーん。コードで責任あるインポートステートメントを見つけました:werkzeug
これにより、後で79行目で失敗が発生します。
つまり、これらのモジュールのいずれかが欠けているということでしょうか? しかし、それらは私の知る限りコア Python モジュールです!
私はコンソールを開いてIPython
、責任あるconda
仮想環境を起動しました。
どうしたの?
python - プログラムによる cProfile データへのアクセス
Python プロファイリング データをキャプチャして、レポートを生成する必要があります。
このコンポーネントのほとんどは Python 3.5 を実行しますが、いくつかのレガシー モジュールをサポートするために、2.7 を実行するシステムの一部がまだ残っています。
この例では、3.5 が 2.7 を介して呼び出し、と の両方をsubprocess.Popen()
キャプチャします (それぞれデータとログとして機能します)。stdout
stderr
2.7 プロセス内で cProfile を実行し、結果のデータをディスクに書き込み、pStats にロードすることができました。
この時点で、ソート/フィルタリングしてコンソールに出力できます。残念ながら、stdout
/stderr
はすでに使用されているため、これはあまり役に立ちません。
また、ソースコードのスニペットをフォーマットしたり、挿入したりする機会があればいいのにと思います。
そのため、プログラムで pStats クラスに問い合わせ、適切なレポートを作成し、それをメッセージング システムに保存する必要があります。
ドキュメントは、コンソールへの書き込み以外のデータを抽出する方法を示していないようです。
プロパティは有望に.stats
見えますが、多くの情報を省略した 3 タプルの配列しか含まれていません。
プログラムで pStats のデータを参照するにはどうすればよいですか?
具体的には、最低限抽出したい:
- ソースファイル/行番号
- 累積時間
- 独占時間