A Python sampling profiler for AWS Lambda functions (and not only).
Project description
pylaprof
pylaprof is a Python library that allows you to profile functions or sections of code.
As a decorator:
from pylaprof import profile
@profile()
def handler(event, context):
...
As a context manager:
from pylaprof import Profiler
def main():
...
with Profiler():
# Only code inside this context will be profiled.
...
It is built around three main abstractions: the profiler, the sampler, and the storer.
The profiler is the main component of pylaprof, it takes care of taking snapshots of your program's stack at regular intervals and feeding them to the sampler for processing; at the end of the profiling session, it will then ask the sampler for a report and provide it to the storer.
Take a look at the source for more documentation and some pre-implemented samplers and storers or here for some usage examples.
Features
-
Accessible: pylaprof's code is thoroughly documented and written to be read and understood by other humans.
-
Extensible: you can write your own sampler or storer to generate reports in the format you like and store them where and how you want.
-
Zero external dependencies[^1].
-
Close to zero impact on performances (check benchmark for more details).
-
Reliable: pylaprof was built with the context of long-running applications or continuously invoked lambda functions in mind. It will never break your code or pollute your standard output or error with unwanted messages.
-
Turn on/off profiling with an environment variable.
-
Store the profiling report only if execution takes longer than a threshold.
[^1]: boto3 is optional and required only if you want to use the S3 storer.
pylaprof-merge
pylaprof-merge
is a CLI tool to merge multiple stackcollapse reports into a
single one. This might come in handy if you want to get an aggregated overview
of a function or piece of code that is executed frequently for short periods.
It is installed automatically if you get pylaprof with pip.
Installation
pip install pylaprof
Or just copy-paste the pylaprof directory where you need it.
Credits
- This library is heavily inspired to pprofile: thanks to its authors for writing such accessible and well-documented code.
- Thanks to @jvns for writing and distributing some of her wizard zines for free: that's what got me into the rabbit hole of profiling in the first place.
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 pylaprof-0.4.6.tar.gz
.
File metadata
- Download URL: pylaprof-0.4.6.tar.gz
- Upload date:
- Size: 6.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.13 CPython/3.7.12 Linux/5.11.0-1028-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9448929e218b3a2d63bb6ef13d36481f93d529f14ab11eff89c2e3afa6bf574d |
|
MD5 | 513d3879431eebb5d093df6d2ae468c5 |
|
BLAKE2b-256 | cd46256bc2e69ece84b0b75253a240df54cbce17bffaeea035952e2a620eec1b |
File details
Details for the file pylaprof-0.4.6-py3-none-any.whl
.
File metadata
- Download URL: pylaprof-0.4.6-py3-none-any.whl
- Upload date:
- Size: 6.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.13 CPython/3.7.12 Linux/5.11.0-1028-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3308f00d9889c6070f758ac254c1d8548056646ef8438bee98130963d1a37249 |
|
MD5 | feee419cb0ccc2d5dca28bdbea0e2ead |
|
BLAKE2b-256 | fddaf1eec61ffc32cc9665b073658433eb50fb2d52db0113428b1c60ea0390ef |