PYTHON PROGRAMMING
Tracemem
is a lightweight Python profiling tool that allows you to measure the full memory usage of a Python session at a particular moment and to track subsequent changes. This can be used to debug code for memory issues or simply to log memory usage. Tracemem
’s feature set is very limited, thanks to which it’s a very lightweight tool, with a minimal impact on the session’s memory. Nevertheless, like any memory-profiling tool, it can significantly impact program execution time.
Under the hood, the package is a wrapper around pympler.asizeof.asizeof()
, a pympler
function that measures memory usage by a Python session. This means that tracemem
offers a simple API to track and assess session memory.
This simplicity comes at a cost. You cannot use this tool to measure memory usage of a particular function, object or code snippet. If your needs are bigger than just assessing session memory, you can use other tools, such as:
And of course, there are typical Python profilers, about which you can read here:
While I usually rely on the built-in cProfile
Python profiler, the line profiler
package offers a powerful tool for line-by-line profiling.
Tracemem
’s API is somewhat atypical for Python, but this was a deliberate decision made to keep the tool as simple and lightweight as possible. This unusual API also stems from the fact that tracemem
is a profiling tool, typically used for debugging. Therefore, the different approach to syntax (or rather, imports) shouldn’t pose any major issues.
This article dives into the fundamentals of tracemem
and demonstrates how to utilize it to monitor the overall…