【Python】プログラムのボトルネックをpstatsで確認する

この記事は約2分で読めます。

 

Pythonを使う業務で仕様に従ってとりあえずプログラムを組んだものの実際に動かしてみると遅すぎて話にならない、、、

 

じゃあどこを改良するべきかという話だが如何せんどの関数がボトルネック(遅延原因)なのかわからない・・・

 

そんなときに使いたいのがこの「pstats」

 

pstatsの使い方

 

#コマンドラインで関数実行する(-s でソート)
$ python -m cProfile -o 出力ファイル名.txt -s tottime 実行ファイル名.pyのパス

 

これでログの出力は完了で、ログを出力したら、次はpstatsから分析結果を読み取ります。

 

# ライブラリと出力ファイルの読み込み
import pstats
sts = pstats.Stats("C:\\work\\sanki-aipc\\export.txt")

#バイナル出力した実行ログを読める形に変換する
sts.strip_dirs().sort_stats(-1).print_stats()

#関数の実行累積時間でソートする
sts.sort_stats(SortKey.TIME).print_stats(40)

 

これを使うと、どの関数の累計実行時間がプログラムを実行する上でのボトルネックになっているかがわかりやすいのでよく使います

 

 

コメント

タイトルとURLをコピーしました