Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

Easily add performance counters to your code

Project description


Build Status Coverage Status license

Easily add performance counters to your python code.

PerfCounter is a thoroughly tested library that make it easy to add multiple counters to any python code to measure intermediate timing and values. Its various reporting mechanisms makes it easy to analyze and report performance measurement regardless of your workflow.


The easiest way to install perfcounters is via pip:

pip install --user -U perfcounters

Type of counter available

Perfcounters natively support two kind of counters: timing counters and value counters.

Timing counter usage

Timing counters are used to measure time elapsed in a section of the code. They are started with the start(...) method and are stopped with the stop(...) method or stop_all(...) method.

Here is a simple example:

counters = PerfCounters()  # init counter collection
counters.start('loop')  # start a timing counter

#do something in the code

counters.stop('loop')  # stop counter  # report all counters

Value counter usage

Counters used to track values. They are either directly set to a given value with the set() method or incremented with the increment() method.

Here is a basic example:

counters = PerfCounters()  
counters.set('mycounter', 39)  # set counter value to 39

#do something in the code

counters.increment('mycounter', 3)  # increment counter by 3
counters.get('mycounter') #  get the value of the counter

End to end example

Here is an end to end example that demonstrate all the basic feature of the librairy:

from perfcounters import PerfCounters
from random import randint

# init counters
counters = PerfCounters()  

num_iterations = randint(100000, 1000000)

# setting a value counter to a given value
counters.set('num_iterations', num_iterations)

# starting a timing counter

for i in range(1000):
    v = randint(0, 1000000)

    # incrementing a value counter to sum the generated values
    counters.increment('total_value', v)

# stopping a timing counter

# reporting counters

This basic example will produce a result like this:

-=[Value counters]=-

| name           |     value |
| total_value    | 494280557 |
| num_iterations |    372159 |

-=[Timing counters]=-

| name   |      value |
| loop   | 0.00195169 |

Note: you technically don't need to stop a timing counter before a report. If you don't do it the value reported will be the delta between start time and the time the report() function was called. The counter will keep running until it is stopped.

Additional examples are available in the documentation advanced usage guide and a description of all the available functions are availble in the API documentation page

Download files

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

Files for perfcounters, version 1.0.6
Filename, size File type Python version Upload date Hashes
Filename, size perfcounters-1.0.6-py3-none-any.whl (9.3 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size perfcounters-1.0.6.tar.gz (6.3 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page