[解決済み] Pythonスクリプトのプロファイリングはどのように行うのですか?
2022-03-18 13:28:37
質問
プロジェクト・オイラー
や他のコーディングコンテストでは、最大実行時間が設定されていたり、特定のソリューションがいかに速く実行されるかを自慢することがよくあります。Pythonの場合、時にはアプローチがやや雑になることがあります。
__main__
.
Pythonのプログラムの実行にかかる時間をプロファイリングする良い方法は何ですか?
どのように解決するのですか?
Pythonには、プロファイラである cプロファイル . 総実行時間だけでなく、各関数を個別に計測し、各関数が何回呼ばれたかを教えてくれるので、どこで最適化を行うべきかを簡単に判断することができます。
このように、コードの中から、あるいはインタープリターから呼び出すことができます。
import cProfile
cProfile.run('foo()')
さらに便利なのは、スクリプトを実行するときにcProfileを呼び出すことです。
python -m cProfile myscript.py
さらに簡単にするために、'profile.bat'という小さなバッチファイルを作りました。
python -m cProfile %1
だから、実行するだけでいいんです。
profile euler048.py
そして、こうなる。
1007 function calls in 0.061 CPU seconds
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.061 0.061 <string>:1(<module>)
1000 0.051 0.000 0.051 0.000 euler048.py:2(<lambda>)
1 0.005 0.005 0.061 0.061 euler048.py:2(<module>)
1 0.000 0.000 0.061 0.061 {execfile}
1 0.002 0.002 0.053 0.053 {map}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler objects}
1 0.000 0.000 0.000 0.000 {range}
1 0.003 0.003 0.003 0.003 {sum}
EDIT: Updated link to the good video resource from PyCon 2013 entitled.
Python プロファイリング
YouTubeでも紹介
.
関連
-
Python関数の高度な応用を解説
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
PythonでECDSAを実装する方法 知っていますか?
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Linux上で動作するC++コードのプロファイリングを行うにはどうすればよいですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonの非常に便利な2つのデコレーターを解説
-
python string splicing.join()とsplitting.split()の説明
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
パッケージングツールPyinstallerの使用と落とし穴の回避
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み】ImportError: PILという名前のモジュールがない
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み】IndexError: invalid index to scalar variableを修正する方法
-
[解決済み】ValueError: pickleプロトコルがサポートされていません。3、python2 pickleはpython3 pickleでダンプしたファイルを読み込むことができない?