Skip to main content

Decorators for profiling/timing/tracing individual functions

Project description

profilehooks

https://travis-ci.org/mgedmin/profilehooks.svg?branch=master https://ci.appveyor.com/api/projects/status/github/mgedmin/profilehooks?branch=master&svg=true https://coveralls.io/repos/mgedmin/profilehooks/badge.svg?branch=master

It’s a collection of decorators for profiling functions. E.g. to profile a single function:

from profilehooks import profile

@profile
def my_function(args, etc):
    pass

The results will be printed when the program exits (or you can use @profile(immediate=True)).

If you’re interested in coarse timings and don’t want to pay for the overhead of profiling, use

from profilehooks import timecall

@timecall       # or @timecall(immediate=True)
def my_function(args, etc):
    pass

Finally, you may be interested in seeing line coverage for a single function

from profilehooks import coverage

@coverage
def my_function(args, etc):
    pass

Also functions can be available in Python console or module if run it with -m arg

$ python -m profilehooks
>>> profile
<function profile at 0x1005c6488>

$ python -m profilehooks yourmodule

Full documentation is available through pydoc profilehooks after installation.

The home page for this module is https://mg.pov.lt/profilehooks. It has screensho, uh, that is, more examples.

Changelog

1.10.0 (2017-12-09)

1.9.0 (2017-01-02)

  • Drop claim of Python 3.2 compatibility. Everything still works, except I’m no longer running automated tests on 3.2, so things might regress.

  • Drop Python 2.6 compatibility.

  • Add Python 3.6 compatibility.

1.8.1 (2015-11-21)

1.8.0 (2015-03-25)

  • New option: @profile(stdout=False) to suppress output to sys.stdout.

1.7.1 (2014-12-02)

  • Make @profile(profiler='hotshot') work again. This was probably broken in 1.0 or 1.1, but nobody complained.

  • Fix missing space in the output of @profile(skip=N).

  • Make @coverage_with_hotshot output match @coverage output precisely.

  • 100% test coverage.

  • Claim Python 3.4 and PyPy compatibility.

1.7 (2013-10-16)

1.6 (2012-06-05)

1.5 (2010-08-13)

  • New argument to @timecall: timer (defaults to time.time). Example: @timecall(timer=time.clock)

  • Better documentation.

1.4 (2009-03-31)

  • Added support for cProfile, make it the default profiler when available. Previously profilehooks supported profile and hotshot only.

1.3 (2008-06-10)

  • Store profile results (when you pass filename to @profile) in pstats format instead of pickles. Contributed by Florian Schulze.

1.2 (2008-03-07)

  • New argument to: @timecall: immediate (defaults to False).

  • Added a test suite.

1.1 (2007-11-07)

  • First release to PyPI, with a setup.py and everything.

  • New arguments to @profile: dirs, sort, entries. Contributed by Hanno Schlichting.

  • Preserve function attributes such as __doc__ and __module__ when decorating them.

  • Pydoc-friendly docstring wrapping and other docstring improvements.

1.0 (2006-12-06)

  • Changed licence from GPL to MIT.

  • New decorator: @timecall

  • New arguments to @profile: skip, filename, immediate.

  • Added support for profile, after becoming convinced hotshot was unreliable. Made it the default profiler.

0.1 (2004-12-30)

  • First public release (it didn’t actually have a version number), announced on my blog: https://mg.pov.lt/blog/profiling.html

  • @profile and @coverage decorators that didn’t accept any arguments.

  • hotshot was the only profiler supported for @profile, while @coverage used trace.py

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

profilehooks-1.10.0.tar.gz (15.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

profilehooks-1.10.0-py2.py3-none-any.whl (13.4 kB view details)

Uploaded Python 2Python 3

File details

Details for the file profilehooks-1.10.0.tar.gz.

File metadata

  • Download URL: profilehooks-1.10.0.tar.gz
  • Upload date:
  • Size: 15.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for profilehooks-1.10.0.tar.gz
Algorithm Hash digest
SHA256 47a3818dfff6a28b27f5ead625fea377e7087cc0b6cc23d301fd0670138212bc
MD5 7df05c55bc04e9f49dc29dd05cdc9fed
BLAKE2b-256 3a5d060c9e8a58c939a56017a5b3968d724d6808857084dfaa86b2c9bccaceb2

See more details on using hashes here.

File details

Details for the file profilehooks-1.10.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for profilehooks-1.10.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 7d9c966aa7e6cfb8230cc7402858ea58ebd44674bfb591db36fc183293bf9627
MD5 abf5aa32eec861e01f53aa8e9975c7d5
BLAKE2b-256 b6b2d2dfe3bab029df73991a3ba244d94c24d4a96e2fa2aabe6bca85fcc67304

See more details on using hashes here.

Supported by

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