Using cProfile results with KCacheGrind
Solution 1:
With cProfile you can also profile existing programs, without making any separate profiling script. Just run program with profiler
python -m cProfile -o profile_data.pyprof script_to_profile.py
and open profile data in kcachegrind with pyprof2calltree, whose -k switch automatically opens data in kcachegrind
pyprof2calltree -i profile_data.pyprof -k
For example profiling whole paster server and webapp would be done like this
python -m cProfile -o pyprof.out `which paster` serve development.ini
pyprof2calltree can be installed with easy_install.
Solution 2:
You could use profilestats.profile
decorator ($ pip install profilestats
) -- a simple wrapper for pyprof2calltree module (rebranding of lsprofcalltree.py
):
from profilestats import profile
@profile
def func():
# do something here
Script can be run as usual. profilestats
creates two files: cachegrind.out.profilestats
and profilestats.prof
in KCachegrind-compatible and cProfile formats correspondingly.