Skip to main content

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.

Command line usage

Upon installation you should 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 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)

Change log

  • 1.2.0 - 2013-11-09: Python 3 support

  • 1.1.1 - 2013-09-25: Miscellaneous bugfixes

  • 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

Release files for pyprof2calltree 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyprof2calltree 1.2.0
File Size Uploaded
pyprof2calltree-1.2.0.tar.gz 6.3 kB Details

Release files / pyprof2calltree-1.2.0.tar.gz

Download URL pyprof2calltree-1.2.0.tar.gz
Size 6.3 kB
Tags Source
SHA-256 checksum
How to use checksums
08bff47ce5e584231d91597a57fca37011f7566e8374d187a0b336b510e51071
BLAKE2b-256 checksum
How to use checksums
8b009b3867e7fb059e38f01d87603bc3f4003a915ac94ce72380794adf5794f0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

1.4.5

1 release file

1.4.4

2 release files

1.4.3

1 release file

1.4.2

1 release file

1.4.1

1 release file

1.4.0

1 release file

1.3.2

1 release file

1.3.1

1 release file

1.3.0

1 release file

This release

1.2.0 This release

1 release file

1.1.1

1 release file

1.1.0

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page