Skip to main content

Help visualize profiling data from cProfile with kcachegrind

Project description

Overview

Script to help visualize profiling data collected with the cProfile python module with the kcachegrind (screenshots) 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.

Authors and contributors

  • David Allouche (original author)

  • Jp Calderone

  • Itamar Shtull-Trauring

  • Johan Dahlin

  • Olivier Grisel (repackaging and pstats support)

  • David Glick (fix in conversion algorithm)

Command line usage

Upon installation you shoould have a pyprof2calltree script in your path:

$ pyprof2calltree --help
Usage: /usr/bin/pyprof2calltree [-k] [-o output_file_path] [-i input_file_path] [-r scriptfile [args]]

Options:
  -h, --help            show this help message and exit
  -o OUTFILE, --outfile=OUTFILE
                        Save calltree stats to <outfile>
  -i INFILE, --infile=INFILE
                        Read python stats from <infile>
  -r SCRIPT, --run-script=SCRIPT
                        Name of the python script to run to collect profiling
                        data
  -k, --kcachegrind     Run the kcachegrind tool on the converted data

Python shell usage

pyprof2calltree is also best used from an interactive python shell such as the defaulft 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)

Change log

  • 1.1.0 - 2008-12-21: integrate fix in conversion by David Glick

  • 1.0.3 - 2008-10-16: fix typos in 1.0 release

  • 1.0 - 2008-10-16: initial release under the pyprof2calltree name

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyprof2calltree-1.1.0.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

pyprof2calltree-1.1.0-py2.5.egg (9.9 kB view details)

Uploaded Source

File details

Details for the file pyprof2calltree-1.1.0.tar.gz.

File metadata

File hashes

Hashes for pyprof2calltree-1.1.0.tar.gz
Algorithm Hash digest
SHA256 180295d1a17caadbc4b45c94232d291c9762d3ab5445000858bd6d1ac78793ac
MD5 60cd2052bd1bf4b224b7533d2b7fa56b
BLAKE2b-256 2c79c5016b8b31e9e50bde3f4735a3d89f7e8e2c54129a3cd016cb957c8404b7

See more details on using hashes here.

File details

Details for the file pyprof2calltree-1.1.0-py2.5.egg.

File metadata

File hashes

Hashes for pyprof2calltree-1.1.0-py2.5.egg
Algorithm Hash digest
SHA256 5bfec5ff4a8970dad821a5179462da09492dd635f594bcf2375c313815dee3e4
MD5 87867cfc52fb95d13c717029ea83ee37
BLAKE2b-256 bc0f1160d8fe3ef37a8d4911126bb378fa999786107aafd6ff58c1107a113ff6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page