A runtime step profiler - for Python.
Project description
totalrecall
A runtime step profiler - for Python.
Introduction
Aggregating runtime statistics and/or finding bottlenecks in code is one of the most common challenges as a software engineer. This is a library to aid that. In comparison to most existing libraries this one is focused on step profiling; aggregation of runtime information in steps marked by keys/tags/labels and optional meta data, which is used to create a summary of all steps in form of a transaction. As a bonus it also supports decorating code contexts and functions.
This is an MVP that most likely will be extended with more profiling features.
Install
Install using pip:
$ pip install totalrecall
Use
Very basic example:
import totalrecall
from time import sleep
# ---------------------------------------------------
# EXAMPLE: runtime step profiler
# ------------------------------------------------
profiler = totalrecall.timer('profile something - using timer', begin = False)
profiler.begin('task 1')
sleep(0.1)
profiler.begin('task 2')
sleep(0.2)
profiler.begin('task 3')
sleep(0.3)
profiler.end()
print('[profiler.time / basic]: TIME: {0}'.format(profiler.time))
print('[profiler.time / basic]: STEPS: {0}'.format(profiler.steps))
# ---------------------------------------------------
# EXAMPLE: runtime step profiler (detailed)
# ------------------------------------------------
profiler = totalrecall.timer('profile something - using timer',
begin = False,
enabled = True,
verbose = True,
colors = True,
)
profiler.begin('task 1')
sleep(0.1)
profiler.begin('task 2')
sleep(0.2)
profiler.begin('task 3')
sleep(0.3)
profiler.end()
print('[profiler.time / detailed]: TIME: {0}'.format(profiler.time))
print('[profiler.time / detailed]: STEPS: {0}'.format(profiler.steps))
# ---------------------------------------------------
# EXAMPLE: runtime context profiler
# ------------------------------------------------
profiler = totalrecall.context('profile something 2 - using context')
with profiler:
sleep(1)
print('[profiler.context / basic]: TIME: {0}'.format(profiler.time))
print('[profiler.context / basic]: STEPS: {0}'.format(profiler.steps))
# ---------------------------------------------------
# EXAMPLE: runtime function profiler
# ------------------------------------------------
profiler = totalrecall.function('profile something 2 - using context')
@profiler
def foo():
sleep(1)
print('[profiler.function / basic]: TIME: {0}'.format(profiler.time))
print('[profiler.function / basic]: STEPS: {0}'.format(profiler.steps))
Test
Clone down source code:
$ make install
Run colorful tests, with only native environment (dependency sandboxing up to you):
$ make test
Run less colorful tests, with multi-environment (using tox):
$ make test-tox
About
This project was mainly initiated - in lack of solid existing alternatives - to be used at our work at Markable.ai to have common code conventions between various programming environments where Python (research, CV, AI) is heavily used.
Credits
Thanks to op-bk for creative help with naming this library.
License
Released under the MIT license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file totalrecall-0.1.1.tar.gz
.
File metadata
- Download URL: totalrecall-0.1.1.tar.gz
- Upload date:
- Size: 13.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.20.1 setuptools/40.8.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fe83724bf56474973d8d8623d24125be0669e64c996e8deb2b8faaa3838924b7 |
|
MD5 | c249230adb8ae77cf98d1f79b97c486c |
|
BLAKE2b-256 | e61bcdb0f397920a54d2e50a7cf0ca761b08a40bf0034484809ab17c5255082a |
File details
Details for the file totalrecall-0.1.1-py3-none-any.whl
.
File metadata
- Download URL: totalrecall-0.1.1-py3-none-any.whl
- Upload date:
- Size: 9.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.20.1 setuptools/40.8.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b9022c42a6cc3694633694d214a0a19f84883c5f9e9496f7c01c96cd45dd6544 |
|
MD5 | c03ad4b537133b0c6b23cb510b87f5fe |
|
BLAKE2b-256 | 6c4ed46a32373c60abce757882e86ac6bf6b74b0b452ded6ca251dc73e3c9bbb |