Skip to main content

Logging heap profiler

Project description

Python 3.7 Contributor Covenant MIT License CircleCI

heapprof: A Logging Heap Profiler

heapprof is a logging, sampling heap profiler for Python 3.7+.

  • "Logging" means that as the program runs, it steadily generates a log of memory allocation and release events. This means that you can easily look at memory usage as a function of time.
  • "Sampling" means that it can record only a statistically random sample of memory events. This improves performance dramatically while writing logs, and (with the right parameters) sacrifices almost no accuracy.

It comes with a suite of visualization and analysis tools (including time plots, flame graphs, and flow graphs), as well as an API for doing your own analyses of the results.

screenshot of split time plot

heapprof is complementary to tracemalloc, which is a snapshotting heap profiler. The difference is that tracemalloc keeps track of live memory internally, and only writes snapshots when its snapshot() function is called; this means it has slightly lower overhead, but you have to know the moments at which you'll want a snapshot before the program starts. This makes it particularly useful for finding leaks (from the snapshot at program exit), but not as good for understanding events like memory spikes.

You can install heapprof with pip install heapprof. heapprof is released under the MIT License.

You can read all the documentation at humu.github.io/heapprof.

Navigating the Repository

If you're trying to find something in the GitHub repository, here's a brief directory (since, like most Python packages, this is a maze of twisty subdirectories, all different):

  • heapprof contains the Python package itself. (The API and visualization logic)
  • _heapprof contains the C/C++ package. (The core profiling logic)
  • docs_src contains the sources for the documentation, mostly as .md and .rst files.
  • docs contains the compiled HTML version of docs_src, created with tools/docs.py and checked in.
  • tools contains tools useful when modifying heapprof itself.
  • And then there are the configuration files for all the tools:
    • setup.py is the master build configuration for the PIP package.
    • .flake8 and .pylintrc are the configuration for Python linting.
    • CPPLINT.cfg is the configuration for C/C++ linting.
    • mypy.ini is the configuration for Python type checking.
    • Gemfile is for setting up Jekyll for documentation hosting.
    • _config.yml is the configuration for Jekyll serving.
    • docs/Makefile and docs/conf.py are the configuration for building the HTML docs image via Sphinx.
    • .circleci is the configuration for continuous integration testing.
    • pyproject.toml and the root requirements.txt make setuptools happy.
  • Additional directories which are .gitignored but which show up during use:
    • build contains C/C++ dependencies and their compiled images; it's managed by setup.py.
    • _site contains the final Jekyll site which is served for documentation; it's created if you run bundle exec jekyll serve to run the docs web server locally.

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

heapprof-1.0.2.macosx-10.15-x86_64.tar.gz (79.5 kB view details)

Uploaded Source

Built Distribution

heapprof-1.0.2-cp37-cp37m-win_amd64.whl (61.7 kB view details)

Uploaded CPython 3.7m Windows x86-64

File details

Details for the file heapprof-1.0.2.macosx-10.15-x86_64.tar.gz.

File metadata

  • Download URL: heapprof-1.0.2.macosx-10.15-x86_64.tar.gz
  • Upload date:
  • Size: 79.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.6

File hashes

Hashes for heapprof-1.0.2.macosx-10.15-x86_64.tar.gz
Algorithm Hash digest
SHA256 70d696de161e4b2dcce58669b814d6b133896f1fee9b3d3fcfea155486c44a60
MD5 1ab313ce3e2f9ada6f052213193d3fe1
BLAKE2b-256 45a51325100c8e7019c1aa4b608b0ffe085c99dd009678b818ad4b325f68c9f8

See more details on using hashes here.

File details

Details for the file heapprof-1.0.2-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: heapprof-1.0.2-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 61.7 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.6

File hashes

Hashes for heapprof-1.0.2-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 9333906ec899ba6afb2dceb957a415375c9528a538dcc28d6851bd8139b5217c
MD5 8659dfe3c8b7352339764003e84cd262
BLAKE2b-256 383bad1fc1d01173d7317ba2259dd9890522b97bf9af6697e01cf9643181c442

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