Skip to main content

Collection of metrics collection tools, including a simple stopwatch

Project description

statman

Python package PyPI version Known Vulnerabilities

Overview

Statman is a collection of metric collectors to embed within your python application. It includes a registry to easily access your metrics.

Statman => registry Metric => set of classes that can perform metric collection Stopwatch => a metric class responsible for tracking time delta

Install it!

Statman is availble from pypi.

It can be manually installed by:

pip install statman

or by adding the following to your requirements.txt:

statman=*

Use it

Statman (Registry)

Statman offers a registery to make it easily to globally access metrics. Perhaps you will create and register a stopwatch in the depths of your codebase to measure the time to write to a database, and then want to access that result in some other part of your application.

Register

  • register(name, metric) => manually register a new metric

Get

  • get(name) => get a metric by name

Count

  • count() => returns a count of the registered metrics.

Reset

  • reset() => clears all metrics from the registry.

Specialized register / get

  • stopwatch(name) => returns a stopwatch instance. If there is a registered stopwatch with this name, return it. If there is no registered stopwatch with this name, create a new instance, register it, and return it.

Stopwatch

Statman-Stopwatch is for timing operations within your system. Suppose that you are trying to track down where the system is slow. Put a stopwatch around certain critical areas, time those operations, and compare.

Constructor

  • Stopwatch(name=None, autostart=False, initial_delta=None) => create an instance of a stopwatch.
    • If autostart set to true, the stopwatch will automatically start
    • If initial_delta is set to a value, and read of the stopwatch is incremented by this amount. This can be helpful if you adding timings together.

Start

  • start() => starts the stopwatch, let the timing begin!

Read

  • read(units, precision) => reads the stopwatch to determine how much time has elapsed. Returns the time elapsed in seconds.
    • The elapsed time will be returned based upon the units ('m' minutes, 's' seconds, 'ms', milliseconds). Defaults to seconds.
    • If precision is provided, read() will round to the number of decimals places based on precision.
    • Note: read does NOT stop the stopwatch - if the stopwatch is runnning, it will continues to run.
  • time(units, precision) => alias for read()

Stop

  • stop(units, precision) => stops the stopwatch, and returns the time elapsed in seconds
    • See read for the role of units and precision

Examples

Maually Register Metric

from statman import Statman
Statman.register('expensive-operation-timing',Stopwatch())

stopwatch = Statman.get('expensive-operation-timing')

Stopwatch via Registry

from statman import Statman

Statman.stopwatch('stopwatch-name').start()
# do some expensive operation that you want to measure
Statman.stopwatch('stopwatch-name').read()

print(f'event took {Statman.stopwatch('stopwatch-name').read(precision=1)}s to execute')  # event took 1.0s to execute

Stopwatch: Direct Usage (no registry)

from statman import Stopwatch
sw = Stopwatch()
sw.start()

# do some expensive operation that you want to measure

delta = sw.stop()
print(f'event took {sw.read(precision=1)}s to execute')  # event took 1.0s to execute

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

statman-0.1.1.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

statman-0.1.1-py3-none-any.whl (4.8 kB view details)

Uploaded Python 3

File details

Details for the file statman-0.1.1.tar.gz.

File metadata

  • Download URL: statman-0.1.1.tar.gz
  • Upload date:
  • Size: 4.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for statman-0.1.1.tar.gz
Algorithm Hash digest
SHA256 a7978e18302ca57ba5558ba048c76493408e41a91fbb0293c940b62542379956
MD5 dd6df312f4699fdd32f0a8624c65ab83
BLAKE2b-256 731d12bdd24908ccff66e65ca521cdc1d532eda79475d75ac6f66e2b997b4cc3

See more details on using hashes here.

File details

Details for the file statman-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: statman-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 4.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for statman-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c4e97980f1917994f4931f4e1245d0c18ecb251b79333b83db6e3accfb8d488c
MD5 9f73f482aa02c3711bd74245e87359ba
BLAKE2b-256 cac6dade6e3d26eaedd57f0fabafb04687a7fc614612d59c311358b694f0577f

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