1. 安裝
只要使用
$ easy_install repoze.profile
下完指令即可安裝完成
2. 設定
直接在pylons的middleware.py修改如下
from repoze.profile.profiler import AccumulatingProfileMiddleware
# ...
def make_app(.....):
load_environment(global_conf, app_conf)
app = PylonsApp()
app = AccumulatingProfileMiddleware(
app,
log_filename='/tmp/profiling.log',
cachegrind_filename='/tmp/cachegrind.out',
discard_first_request=True,
flush_at_shutdown=True,
path='/__profile__'
)
app = RoutesMiddleware(app, config['routes.map'])
app = SessionMiddleware(app, config)
app = CacheMiddleware(app, config)
#.....
log_filename代表profiling log檔案存放位置
cachegrind_filename代表要給KCachegrind工具觀看的profiling log檔案存放位置
discard_first_request代表要不要忽略第一次檢視的結果,因為通常第一次的數據都會比較不正常而影響了整體的結果
flush_at_shutdown代表middleware instance不存在時是否要將profiling結果刪掉
path顧名思義就是利用browser檢視profile結果的URI
設定完成後重起httpd server
3. 確認結果
確認 http://localhost/__profile__ 能否存取
理論上可以看到畫面如下
4. 使用KCachegrind檢視
5. 參考資料
http://pypi.python.org/pypi/repoze.profile
http://docs.repoze.org/profile/#viewing-the-profile-statistics
http://nickmurdoch.livejournal.com/392632.html