Memory Profiler
This is a python module for monitoring memory consumption of a process as well as line-by-line analysis ofmemory
consumption for python programs. It is a pure python module which depends on the psutil module.
line-by-line memory usage
The line-by-line memory usage mode is used much in the same way of the line_profiler:: first decorate the function you would like to profile with @profile and then run the script with a special script (in this case with specific arguments to the Python interpreter).
In the following example, we create a simple function my_func that allocates lists a, b and then deletes b:
@profile
def my_func():
a = [1] * (10 ** 6)
b = [2] * (2 * 10 ** 7)
del b
return a
if __name__ == '__main__':
my_func()
Execute the code passing the option -m memory_profiler to the python interpreter to load the memory_profiler
module and print to stdout the line-by-line analysis. If the file name was example.py, this would result in:
$ python -m memory_profiler example.py
Output:
Line # Mem usage Increment Line Contents
==============================================
3 @profile
4 5.97 MB 0.00 MB def my_func():
5 13.61 MB 7.64 MB a = [1] * (10 ** 6)
6 166.20 MB 152.59 MB b = [2] * (2 * 10 ** 7)
7 13.61 MB -152.59 MB del b
8 13.61 MB 0.00 MB return a
from memory_profiler import profile
@profile
def my_func():
a = [1] * (10 ** 6)
b = [2] * (2 * 10 ** 7)
del b
return a
In this case the script can be run without specifying -m memory_profiler in the command line and In function decorator, you can specify the precision as an argument to the decorator function . If a python script with decorator @profile is called using -m memory_profiler in the command line, the precision parameter is ignored.
Comments