A simple cli-based profiler for Python
Project description
simple_python_profiler
An early look at a simple Python profiler, written in Python. Get started by typing pip install simple_python_profiler
.
Description
A profiler that times every function call and reports back the top 100 slowest functions.
logs every function call means it's non-sampling, hence resource-intensive. If that's unsuitable, check out something like py-spy.
Usage:
# your-script.py
from simple_python_profiler import Profiler
if __name__ == '__main__':
with Profiler():
run_your_code()
This will decorate all your top-level functions in your modules. System (built-in) and pip-installed packages (those that go in dist-packages
) are excluded.
Since the default behaviour is to not include nested functions, you can profile your nested functions too as follows:
from simple_python_profiler import profile_recursive
# your-module.py
def top_level_function():
@profile_recursive
def inner_function():
print('in inner fn')
This recursive feature relies on the codetransformer dependency. However, it has a few bugs in recent versions of Python. If you encounter runtime exceptions with simple_python_profiler
, use the second, non-recursive decorator:
from simple_python_profiler import profile
# your-module.py
def top_level_function():
@profile
def inner_function():
print('in inner fn')
Releasing on PyPI
pipenv shell
flit build
flit publish
Enter password when prompted.
TODO
- option to include system packages
Released under the MIT licence. See file named LICENCE for details.
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
Hashes for simple_python_profiler-0.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 969eaa0af8ad4bf1fac4ce0880f50e8ce00b82898d2510dc9e030f27c3220d09 |
|
MD5 | 21e2c6a65c8f2af6d21e8822fad2f578 |
|
BLAKE2b-256 | deed8676340fff77e2535a1062690a361dfc6520af713cbc45cc34d27e9a4bb3 |
Hashes for simple_python_profiler-0.2-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ce38f672d92acafb54f74024f1b713ddfee2f13fe59e42ebc45394c538d37f55 |
|
MD5 | 491c88417fdb4eca6b166a5e824afd82 |
|
BLAKE2b-256 | 0d82d2556b2c19a708f2957fef128e00296c2d3fc8c6e33bc62a0b86bf673f74 |