pyprof2calltree(1)
visualize Python cProfile data in kcachegrind
Description
PYPROF2CALLTREE
NAME
Pyprof2calltree - visualize Python cProfile data in kcachegrind
DESCRIPTION
Script to help visualize profiling data collected with the cProfile Python module with the kcachegrind graphical calltree analyser.
This is a rebranding of the venerable http://www.gnome.org/˜johan/lsprofcalltree.py script by David Allouche et Al. It aims at making it easier to distribute (e.g. through PyPI) and behave more like the scripts of the debian kcachegrind-converters package. The final goal is to make it part of the official upstream kdesdk package.
OPTIONS
Upon installation you should have a pyprof2calltree script in your path:
$
pyprof2calltree --help
usage: pyprof2calltree [-h] [-o output_file_path] [-i
input_file_path] [-k]
[-r scriptfile [args ...]]
optional
arguments:
-h, --help show this help message and exit
-o output_file_path, --outfile output_file_path
Save calltree stats to <outfile>
-i input_file_path, --infile input_file_path
Read Python stats from <infile>
-k, --kcachegrind Run the kcachegrind tool on the converted
data
-r scriptfile [args ...], --run-script scriptfile [args ...]
Name of the Python script to run to collect profiling
data
PYTHON SHELL USAGE
pyprof2calltree is also best used from an interactive Python shell such as the default shell. For instance let us profile XML parsing:
>>>
from xml.etree import ElementTree
>>> from cProfile import Profile
>>> xml_content = '<a>\n' +
'\t<b/><c><d>text</d></c>\n' *
100 + '</a>'
>>> profiler = Profile()
>>> profiler.runctx(
... "ElementTree.fromstring(xml_content)",
... locals(), globals())
>>>
from pyprof2calltree import convert, visualize
>>> visualize(profiler.getstats()) # run
kcachegrind
>>> convert(profiler.getstats(),
'profiling_results.kgrind') # save for later
or with the ipython:
In [1]:
%doctest_mode
Exception reporting mode: Plain
Doctest mode is: ON
>>>
from xml.etree import ElementTree
>>> xml_content = '<a>\n' +
'\t<b/><c><d>text</d></c>\n' *
100 + '</a>'
>>> %prun -D out.stats
ElementTree.fromstring(xml_content)
*** Profile stats marshalled to file 'out.stats'
>>>
from pyprof2calltree import convert, visualize
>>> visualize('out.stats')
>>> convert('out.stats', 'out.kgrind')
>>>
results = %prun -r ElementTree.fromstring(xml_content)
>>> visualize(results)