A combined time and memory profiler using psutil
Project description
tprofiler
tprofiler is a lightweight Python library for total profiling—combining time and memory profiling using psutil with optional line-by-line profiling using line_profiler. It provides a decorator for profiling individual functions, a context manager for profiling code blocks, and a command-line tool for profiling entire scripts.
Features
- Combined Time and Memory Profiling: Track execution time and process memory (RSS) before and after function or code block execution.
- Easy-to-Use Decorator:
Simply add
@profileto any function to get detailed profiling output. - Line-by-Line Profiling:
Use
@profile.lineto obtain a detailed, line-by-line performance analysis (requiresline_profiler). - Context Manager:
Profile arbitrary code blocks with the provided
ProfileContext. - Command-Line Tool:
Run any Python script with
tprofilerto obtain an overall profiling summary.
Installation
tprofiler is available on PyPI. Install it using pip:
pip install tprofiler
Usage
1. As a Decorator
Add profiling to any function by importing and applying the decorator:
from tprofiler import profile
@profile(enable_memory=True, enable_time=True, verbose=True)
def my_function(n):
total = sum(range(n))
return total
result = my_function(1000000)
When my_function is called, tprofiler prints the execution time and memory usage details, along with the function's return value if verbose is enabled.
2. Line-by-Line Profiling
For a detailed line-by-line analysis, use the line profiling decorator:
from tprofiler import profile
@profile.line
def compute_heavy(n):
data = [i for i in range(n)]
return sum(data)
compute_heavy(10_000_000)
This will output detailed line-by-line performance statistics for compute_heavy (ensure line_profiler is installed).
3. As a Command-Line Tool
You can profile an entire script by running:
tprofiler your_script.py [script arguments...]
For example, if you have a script named example.py, run:
tprofiler example.py --option value
This command executes the script and prints an overall profiling summary including total time elapsed and memory consumption.
4. Using the Context Manager
To profile a block of code without decorating a function, use the ProfileContext:
from tprofiler import ProfileContext
with ProfileContext(enable_memory=True, enable_time=True):
# Place the code you want to profile here
total = sum(range(1000000))
print(total)
How It Works
-
Time Profiling:
Uses Python's
timemodule to capture the execution time before and after function calls or code blocks. -
Memory Profiling:
Uses
psutilto measure the process's memory usage (RSS) before and after execution. -
Line Profiling:
Integrates with
line_profilerto provide detailed per-line execution statistics.
Contributing
Contributions and improvements are welcome! Feel free to open issues or submit pull requests on GitHub.
License
This project is licensed 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
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 tprofiler-1.0.1.tar.gz.
File metadata
- Download URL: tprofiler-1.0.1.tar.gz
- Upload date:
- Size: 5.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1854344fc8499be20f744ced0beaa2e7ae4c326c9ad05538ad1e6df0325d735b
|
|
| MD5 |
f1bc3886eb267c4fb208e1f6b172d836
|
|
| BLAKE2b-256 |
b6d42c162031590d0d09f7118503d0283fb1a3ea4c3c9aa789bf3280cd5a781d
|
File details
Details for the file tprofiler-1.0.1-py3-none-any.whl.
File metadata
- Download URL: tprofiler-1.0.1-py3-none-any.whl
- Upload date:
- Size: 5.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6748d00bc47f1d1f56f8490bbc12655ea66a74426b21ec18017ff9adaf6e56bb
|
|
| MD5 |
60139c33ec924334864ffd2ca8e4521b
|
|
| BLAKE2b-256 |
1956697d32afc1c40eda3c7d4573533ea85faa24f8b3ce257ac10cd595dab2c8
|