Convert cprofile/pstats files into sqlite databases.
Project description
Litestats
Profiling in Python has always been easy, however, analyzing the
profiler's output not so much. After the profile has been created you
can use Python's pstats module but it feels quite clumsy and not
really empowering.
Enter litestats! Litestats is a simple command line tool that takes the
output of the Python profiler and transforms the data into a sqlite3
database. You can now easily analyze the profiler output using sqlite
on the command line, the sqlitebrowser for a graphical interface or
use the data base as the foundation of your very own tooling around the
analysis.
How does it work?
Litestats reads the dump of the profiler and creates a normalized data base with tree tables:
functions: contains each function (callers and callees) with filename, line number and function namestatscontains the statistics (primitive/total calls, total/cumulative time) for all functionscallsa caller-callee mapping
While this provides an exact representation of the dump, those tables
would be cumbersome to use. So litestats additionally creates three
views resembling pstats print_stats, print_callers and
print_callees functionality:
pstatscallerscallees
Install
Litestats has no requirements other than Python itself:
$ pip install litestats
Usage
$ # run the profiler and dump the output
$ python3 -m cProfile -o example.prof example.py
$ # convert dump to sqlite3 db
$ litestats example.prof
$ # example.prof.sqlite created
You can now use the sqlite3 data base to investigate the profiler dump:
sqlite> select *
...> from pstats
...> order by cumtime desc
...> limit 20;
ncalls tottime ttpercall cumtime ctpercall filename:lineno(function)
---------- ---------- -------------------- ---------- ---------- ------------------------------------
18/1 0.000161 8.94444444444444e-06 0.067797 0.067797 ~:0(<built-in method builtins.exec>)
1 1.0e-06 1.0e-06 0.067755 0.067755 <string>:1(<module>)
1 4.0e-06 4.0e-06 0.067754 0.067754 /usr/lib/python3.7/runpy.py:195(run_
1 6.0e-06 6.0e-06 0.066135 0.066135 /usr/lib/python3.7/runpy.py:62(_run_
1 1.1e-05 1.1e-05 0.066113 0.066113 /home/venthur/Documents/projects/lit
1 6.6e-05 6.6e-05 0.055152 0.055152 /home/venthur/Documents/projects/lit
1 4.1e-05 4.1e-05 0.0549 0.0549 /home/venthur/Documents/projects/lit
1 0.050196 0.050196 0.050196 0.050196 ~:0(<method 'executescript' of 'sqli
20/3 8.9e-05 4.45e-06 0.011064 0.003688 <frozen importlib._bootstrap>:978(_f
20/3 4.8e-05 2.4e-06 0.011005 0.00366833 <frozen importlib._bootstrap>:948(_f
20/3 7.5e-05 3.75e-06 0.01083 0.00361 <frozen importlib._bootstrap>:663(_l
15/3 3.5e-05 2.33333333333333e-06 0.01073 0.00357666 <frozen importlib._bootstrap_externa
29/5 2.5e-05 8.62068965517241e-07 0.010215 0.002043 <frozen importlib._bootstrap>:211(_c
3 6.0e-06 2.0e-06 0.010087 0.00336233 ~:0(<built-in method builtins.__impo
28/6 9.0e-06 3.21428571428571e-07 0.008977 0.00149616 <frozen importlib._bootstrap>:1009(_
1 9.0e-06 9.0e-06 0.00841 0.00841 /home/venthur/Documents/projects/lit
16 0.000138 8.625e-06 0.004802 0.00030012 <frozen importlib._bootstrap_externa
1 4.5e-05 4.5e-05 0.004143 0.004143 /usr/lib/python3.7/logging/__init__.
1 0.004038 0.004038 0.004038 0.004038 ~:0(<method 'commit' of 'sqlite3.Con
13 3.3e-05 2.53846153846154e-06 0.002368 0.00018215 <frozen importlib._bootstrap_externa
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file litestats-1.1.0.tar.gz.
File metadata
- Download URL: litestats-1.1.0.tar.gz
- Upload date:
- Size: 4.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ab75870697853fcbb099de64b09a4f906387b87919bed4ac2b8dc0d59ad70b8d
|
|
| MD5 |
5e4bde53d9088b421f2b6210a2d9d6cf
|
|
| BLAKE2b-256 |
a3bade65ed88537f8ca18c32453ee9861928666abe9f9fe1b0295d47f1291470
|
File details
Details for the file litestats-1.1.0-py3-none-any.whl.
File metadata
- Download URL: litestats-1.1.0-py3-none-any.whl
- Upload date:
- Size: 5.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b5e24c5d5c83a051a23b2f1d1990dffee5984e5f9f24d88e6f80c5c38ff758c6
|
|
| MD5 |
f3168956c971023868c103f511cb0da0
|
|
| BLAKE2b-256 |
9c6779a392ec56f1659de28cd3a3a7cba31a9234c5113e73b92df70ec370155a
|