問題タブ [cprofile]

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.

0 投票する
1 に答える
1615 参照

python - pypy でプロファイリングする方法 (cProfile が機能しない)

実行したときのような出力をpypyで取得する方法はありますpython -m cProfile myscript.pyか?

pypy -m cProfile myscript.pyいくつかの乱数が表示されています (一部は負の数です)。どうやらこれは2011 年のバグであり、まだ修正されていません。

0 投票する
1 に答える
3777 参照

python - gunicornで実行中にpythonのcProfileを使用してdjangoアプリをプロファイリングするにはどうすればよいですか

python cProfile を使用して gunicorn で実行中に Django アプリケーションをプロファイリングするにはどうすればよいですか。

開発モードでプロファイリングできます: python -m cProfile -o sample.profile manage.py runserver

しかし、gunicorn を使用して実稼働サーバーで実行している場合はどうすればよいですか?

0 投票する
2 に答える
7534 参照

python - psycopg2 が遅いのはなぜですか?

psycopg2 を使用して postgres で動作するプログラムがあります。しかし、DB への挿入には時間がかかりすぎます。

以下は、cProfile を使用したプロファイリングの結果です。

結論:

psycopg2 で動作するコードは次のとおりです。

私は何を間違っていますか?

なぜそんなに時間がかかるのか、いくつかのアイデアがあるかもしれません。

0 投票する
0 に答える
629 参照

python - ライブラリ関数に費やした時間をプロファイルするにはどうすればよいですか?

クラスをプロファイリングしようとすると、独自のメソッドと関数のそれぞれに費やされた時間を分析できません。

たとえば、 を使用cProfileすると、次のことができます。

私はこの分析を与えられています:


または、 I を使用profilehooksして次のことができます。

そして、私はこの分析を与えられました:

どちらの手法も、ライブラリ関数で費やされた時間を示しません。たとえば、どのくらいの時間が費やされたかを示す分析を取得するにはどうすればよいnumpy.add()ですか?

0 投票する
0 に答える
856 参照

python - cProfile の結果の解釈: 小さな関数での合計時間と累積時間

私の Python プログラムのほとんどは、 というメソッドで費やされてい_build_userdbsます。結果の解釈に役立つすばらしいツールSnakeVizを使用しています。下にスクリーンショットがあります。

SnakeViz からの可視化

ですから、今、その写真では、私は にい_build_userdbsます。そのすぐ外側にある大きな緑色の円は と呼ばれるメソッド_append_recordで、ご覧のとおり、ほとんどすべてを占めています_build_userdbs。これは分かります。

しかし、ここが紛らわしい部分です。内側の緑色の円 (時間の大部分を占める) の外側にある緑色の円は、 の累積時間から で呼び出された関数の累積時間を_append_record 引い_append_recordたものです。

量的には、_append_recordの累積時間は55970 秒です。それが内側の緑の円です。その合計時間は 54210 秒です。それが外側の緑の円です。

_append_record、その画像を新しいタブで開くとわかるように、他のいくつかの関数を呼び出します。それらは:

  • json.dumps()(累計459秒)
  • _userdb_scratch_file_path()(累計161秒)
  • open(累積2160秒)
  • print(フレームの 0.1% 未満なので表示されません)

わかりました、これは理にかなっています。の累積時間と合計時間の差が比較的小さいため、_append_record他の関数に委任するのではなく、独自のスタック フレームで多くの処理を行う必要があります。しかし、関数の本体は次のとおりです。

では、このすべての処理はどこで行われているのでしょうか? 違いを説明するこの関数呼び出しのオーバーヘッドはありますか? プロファイリングのオーバーヘッド?これらの結果は単に不正確ですか? close()関数が呼び出されないのはなぜですか?

0 投票する
1 に答える
1982 参照

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}

古いコード:

0 投票する
2 に答える
4633 参照

python - cProfile とインポート

私は現在、使用方法を学ぶ過程にcProfileあり、いくつか疑問があります。

現在、次のスクリプトのプロファイルを作成しようとしています。

コマンドを実行するpython -m cProfile test_cprofile.pyと、次の結果が得られます。

ただし、上部に ( ) などの pylab インポートを使用してスクリプトを編集するとimport pylab、出力cProfileが非常に大きくなります。を使用して行数を制限しようとしましたpython -m cProfile test_cprofile.py | head -n 10が、次のエラーが表示されます。

import pylabこのような高出力情報を生成するモジュールまたは別のモジュールがある、これと同様の状況に対する正しい手順を誰かが助けることができますかcProfile?