PythonでProfiling

はじめに

Pythonでもパフォーマンスが気になった場面があったので、まずは基本であるProfileを取ろうと思ったのが事の始まり。
ただやってみると、結構面倒な場面がちらほらあって、苦戦したのでメモに残しておく。

目標としては、Profileを取るだけでなく、それを可視化する所までやる。

パッケージ(Ubuntu

runsnakerunパッケージをインストールするだけでOK。

パッケージ(古いUbuntuの場合)

Ubuntuの場合、全てパッケージだけでOK。Profilerとしてはpython-profilerを、可視化にはpython-wxtoolsをインストール後、Pythonのパッケージャーeasy_installでRunSnakeRunをインストール。easy_install自体はpython-setuptoolsでインストールできる。

Profile

詳細は以下のページ参照。

http://www.python.jp/doc/nightly/library/profile.html

とりあえず簡単なプロファイルを取るには、

$ python -m cProfile -o prof myscript.py

とやれば、profというプロファイルが出力される。これはpstatsとか使えば、Pythonインタプリタで対話的に出力可能だが、今回はGUIで可視化する。

可視化

Ubuntuはパッケージの関係で微妙に使い方が異なっており、

$ runsnake prof

とやるだけで可視化できる。可視化するとこんな感じ