問題タブ [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.
python - Python プロファイリングで組み込みメソッド呼び出しの場所を見つけることはできますか?
cProfile を使用して Python コードをプロファイリングすると、多くの {組み込みメソッド...} に多くの時間がかかります。それらは、サードパーティの API または私の C/Fortran 拡張機能である可能性があります。問題は、Python スクリプトでこれらのメソッドが呼び出された場所を簡単に見つけることができるかということです。ありがとう!
python - C拡張を介してPythonパッケージに実装されているCUDAコードを(視覚的に)プロファイリングする方法は?
CUDA ビジュアル プロファイラー (nvvp) にはプロファイリング用の実行可能エントリが必要ですが、私の CUDA コードは C 拡張を介して Python パッケージに実装されています。このpythonパッケージでCUDAプロファイリングを行う方法はありますか? ありがとう!
python - Python: cProfile ログの解釈
私は、他のすべての人に最も適した人を決定する方法を持っています. 基本的に、人からリストにマップする dict の項目に対して 2 つのネストされたループがあり (同様のリストが互換性を決定します)、compat が計算され、外側のループの人の以前の最大のものよりも大きい場合は保存されます。 .
したがって、互換性は同じであり、外側のループが person 2 に到達したときに同じ計算を行う必要がないため、他の人 (内側のループの on) の互換性も更新することでパフォーマンスを最適化することにしました。そしてその内1人1【互換関係の対称性を利用】。
まあ、私は20倍遅くなりました. 改善されたバージョンのすべての操作の合計時間が、改善されていないコードのものよりも優れている (または同様の) ため、c-profile ログは奇妙です。そのため、ボトルネックを見つけるのに絶対に行き詰まっています。:(
このログを解釈する方法についてアドバイスをくれる人はいますか? 邪悪な指示はどこに行ったのですか?
通常のコードのログ:
「最適化された」もののログ:
// EDIT :
念のため、コードも提供できます。私の謙虚な理解では、後者が前者より20倍遅くなる理由はまったくありません。
通常のもの:
そして「最適化された」:
python - Pythonコードと比較したライブラリitertoolsのパフォーマンス
私の質問への答えとして、2つのリストが同じである1ベースの位置を見つけて、Cライブラリitertoolsを使用して処理を高速化するためのヒントを得ました。
確認するために、cProfileを使用して次のテストをコーディングしました。
関数match_iter()はitertoolsを使用しており、関数match_loop()はプレーンPythonを使用する前に実装したものです。
関数test()は、2つのリストを定義し、2つの関数の結果をリストに出力して、機能していることを確認します。両方の結果の期待値は5で、これはリストが等しい場合の長さです。次に、両方の関数で10,000回ループします。
最後に、profile_test()を使用して全体のプロファイルを作成します。
私が学んだことは、izipはpython3のitertoolsに実装されておらず、少なくとも私が使用しているdebianwheezywhitでは実装されていないということでした。だから私はpython2.7でテストを実行しました
結果は次のとおりです。
不思議に思うのは、cumtimeの値を見ると、私のプレーンなpythonバージョンの値は10,000ループで0.162秒で、match_iterバージョンの値は0.434秒です。
一つには、Pythonは非常に高速で素晴らしいので、心配する必要はありません。しかし、これは正しいでしょうか?Cライブラリがジョブを完了するのに単純なPythonコードの2倍以上の時間がかかるということですか?それとも私は致命的な間違いをしていますか?
確認するために、python2.6でもテストを実行しました。これはさらに高速のようですが、ループとitertoolsの違いは同じです。
誰が経験豊富で喜んで手伝ってくれますか?
python - cProfile-Pythonオブジェクトにデータを保持/ディスクへの書き込みを延期
cProfileで分析したい関数がありますが、結果に関する他の多くの分析も保存します-これは現在、プログラムで名前が生成されたディレクトリに保存されており、プロファイルデータをに保存したいと思います同じディレクトリ。
ただし、ディレクトリ名は、コールバック関数で、プロファイルする関数が終了した後にのみ計算されconcurrent.futures
ます。
ファイル名がわかったら、コールバック関数に渡して(たとえば、関数の結果とともに返される)ディスクに書き込むことができるPythonオブジェクトにプロファイルデータを保持する簡単な方法はありますか?
python - Python 3 で cProfile をインポートできない
cProfile モジュールを Python 3.3.0 にインポートしようとしていますが、次のエラーが発生しました。
完全なコード ( cProfile_try.py
) は次のとおりです。
python - f2py を介した Python への Fortran 拡張: プロファイルを作成するには?
f2py (Ver. 2) でコンパイルされた Fortran (gfortran 4.4.7) で記述された Python (2.7.2) の拡張機能を使用しています。
を使用して Python 部分をプロファイリングできますcProfile
が、結果から Fortran 関数に関する情報が得られません。代わりに、時間は Fortran 関数を呼び出す Python 関数に起因します。
ビルドするすべての Fortran オブジェクトに対して "-pg -O" フラグを有効にしました。また、次の方法で共有オブジェクトを作成する f2py 呼び出しでもf2py --opt="-pg -O"
...
Fortran 情報を取得する方法についてのヒントも大歓迎です。
誰かが別のプロファイラーで同様のセットアップを使用している場合、私も興味があります。
multithreading - Python でコールバック関数から cProfile の結果を取得する方法
何を修正する必要があるかをよりよく理解できるように、Python コードのどの部分が最も遅く実行されているかを判断しようとしています。私は最近、非常に役立つcProfileとgprof2dotを発見しました。私の問題は、コールバックとして使用している関数に関する情報が表示されないことです。これは、実行が非常に遅い可能性があると思われます。この回答から私が理解していることは、cProfile はデフォルトではメイン スレッドでのみ機能するということです。コールバックは別のスレッドを使用すると推測しています。その答えは、スレッド ライブラリを使用している場合に動作させる方法を示していましたが、私の場合は動作させることができませんでした。
これは私のコードがどのように見えるかです:
vis_callback 関数で cProfile 情報を取得する方法についてのアイデアはありますか? スクリプト自体を変更するか、またはpython -m cProfile
その他のコマンド ライン メソッドを使用する方がよいでしょうか。
画像の読み取りまたはキューへの追加が遅いと思います。私の直感では、それらをキューに保存するのは恐ろしいことですが、メインスレッドにない場合は動作を拒否するmatplotlibで表示する必要があるため、損傷がどれほどひどいかを正確に確認したいと思いますこの回避策があります
networking - フラスコアプリケーションのボトルネックを見つける
フラスコアプリケーションを書きました。リモートサーバーにデプロイしたとき、非常に遅いことがわかりました。それで、私はそれを使っていくつかのプロファイリングの練習をしました。以下の写真をご覧ください。
プロファイリングに使用するコードは次のとおりです。
写真1
リモート サーバーでのプロファイリング。多分ボトルネックは_socket.getaddrinfo
写真2
ローカル マシンでのプロファイリング。ボトルネックは見つかりませんでした。
写真3
場合によっては、リモートサーバーでもボトルネックが見つからないことがあります。見つかりません_socket.getaddrinfo
。変!
リモートサーバーのpythonシェルでもプロファイリングを行いましたcProfile
. これを見てください:
たぶん、仕事をするのに時間がかかるという事実があり、それをdns resolve
自分で変えることはできません。
誰でも教えてもらえますか: なぜ_socket.getaddrinfo
呼び出され、なぜ呼び出されないことがありますか? 呼ばれないようにする方法_socket.getaddrinfo
は?それは悲しいことに私を失望させた私のウェブサイトを遅くするからです.
python - ウィンドウ 7 で Python コードをプロファイリングするには、どのツールを使用すればよいですか?
Widnows 7 で Python コードのプロファイルを作成したいと考えています。cProfile の raw ダンプよりもユーザー フレンドリーなものを使用したいと考えています。その検索で、GUI RunSnakeRun を見つけましたが、Windows で RunSnakeRun をダウンロードする方法が見つかりません。Windows で RunSnakeRun を使用することは可能ですか、それとも他にどのようなツールを使用できますか?
編集: RunSnakeRun をインストールしました。それは進歩です、みんなありがとう。Linuxコマンドラインなしでどのように実行しますか?
編集 2:このチュートリアルhttp://sullivanmatas.wordpress.com/2013/02/03/profiling-python-scripts-with-runsnakerun/を使用していますが、最後の行で「python: can't open」で電話を切りましたファイル 'runsnake.py': [Errno 2] そのようなファイルまたはディレクトリはありません」