patternpythonCritical
Which Python memory profiler is recommended?
Viewed 0 times
profilerpythonmemoryrecommendedwhich
Problem
I want to know the memory usage of my Python application and specifically want to know what code blocks/portions or objects are consuming most memory.
Google search shows a commercial one is Python Memory Validator (Windows only).
And open source ones are PySizer and Heapy.
I haven't tried anyone, so I wanted to know which one is the best considering:
-
Gives most details.
-
I have to do least or no changes to my code.
Google search shows a commercial one is Python Memory Validator (Windows only).
And open source ones are PySizer and Heapy.
I haven't tried anyone, so I wanted to know which one is the best considering:
-
Gives most details.
-
I have to do least or no changes to my code.
Solution
guppy3 is quite simple to use. At some point in your code, you have to write the following:
This gives you some output like this:
You can also find out from where objects are referenced and get statistics about that, but somehow the docs on that are a bit sparse.
There is a graphical browser as well, written in Tk.
For Python 2.x, use Heapy.
from guppy import hpy
h = hpy()
print(h.heap())This gives you some output like this:
Partition of a set of 132527 objects. Total size = 8301532 bytes.
Index Count % Size % Cumulative % Kind (class / dict of class)
0 35144 27 2140412 26 2140412 26 str
1 38397 29 1309020 16 3449432 42 tuple
2 530 0 739856 9 4189288 50 dict (no owner)You can also find out from where objects are referenced and get statistics about that, but somehow the docs on that are a bit sparse.
There is a graphical browser as well, written in Tk.
For Python 2.x, use Heapy.
Code Snippets
from guppy import hpy
h = hpy()
print(h.heap())Partition of a set of 132527 objects. Total size = 8301532 bytes.
Index Count % Size % Cumulative % Kind (class / dict of class)
0 35144 27 2140412 26 2140412 26 str
1 38397 29 1309020 16 3449432 42 tuple
2 530 0 739856 9 4189288 50 dict (no owner)Context
Stack Overflow Q#110259, score: 315
Revisions (0)
No revisions yet.