A simple decorator to profile memory usage in production apps
Project description
profile-decorator
Problem/Motivation
Find memory leaks in Python code quickly without significant code changes in a quickly digestible manner such that the root cause can be easily diagnosed.
Until open-telemetry Adds metrics API, I want a quick and dirty decorator that will give me the memory usage of the process in scope before and after a function is run.
Usage
# example.py
from profile_decorator import profile_decorator
profile_decorator.init()
@profile_decorator.profile_memory
def my_func():
print("hello, world")
if __name__ == "__main__":
my_func()
$ poetry run python example.py
hello, world
{
"start_time": "2021-08-29T13:20:31.435036",
"uss_memory_before": 6852608,
"end_time": "2021-08-29T13:20:31.435892",
"uss_memory_after": 6995968,
"lines": [
{
"filename": "/home/harry/projects/GitHub/hkiang01/profile-decorator/example.py",
"lineno": 7,
"size": 752,
"size_diff": 0
},
{
"filename": "/home/harry/projects/GitHub/hkiang01/profile-decorator/example.py",
"lineno": 12,
"size": 560,
"size_diff": 0
}
]
}
Design
The decorator will collect the following information:
- name of function
- filepath
- line number
- memory usage before function is run
- timestamp when function is called
- timestamp when function is finished
- memory usage after function is run
It will expose this in json or other easily digestble format for reporting purposes.
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
Close
Hashes for profile_decorator-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8d3c117192dd482fa99ecd7a2d0fbd04f157e769eb3c100242d6b52ff247ee73 |
|
MD5 | 3cbf6df182294517d98dd79534cf223e |
|
BLAKE2b-256 | 972a6c0f2483878a524356533b448c25e7949e2b40481363ed9db1b14b785994 |