Tracking Memory Usage in Python with tracemalloc

Posted by Afsal on 21-Mar-2025

Hi Pythonistas!

Efficient memory management is key to writing optimized Python code, especially when dealing with large datasets or performance-sensitive applications. Python provides a built-in tool called tracemalloc to track memory usage and detect potential issues.

What is tracemalloc?
tracemalloc (short for Trace Memory Allocations) is a built-in module that helps monitor memory usage and identify which parts of your code consume the most memory.

Why use tracemalloc?

Measure current and peak memory usage
Optimize high-memory-consuming functions
Debug memory leaks in long-running applications

Getting Started with tracemalloc

Let’s track the memory usage of a function that creates a large list:

code

import tracemalloc

def memory_hungry_function():
    nums = [x for x in range(10**6)]
    return sum(nums)

tracemalloc.start()

memory_hungry_function()

current, peak = tracemalloc.get_traced_memory()
print(f"Current memory usage: {current / 1024**2:.4f} MB")
print(f"Peak memory usage: {peak / 1024**2:.4f} MB")

tracemalloc.stop()

 Output

Current memory usage: 0.0018 MB
Peak memory usage: 34.7549 MB

tracemalloc.start(): Begins tracking memory allocations
tracemalloc.get_traced_memory(): Returns current and peak memory usage
tracemalloc.stop(): Stops tracking memory

Practical Applications

  • Optimize functions with high memory consumption
  • Track memory usage over time in long-running applications
  • Debug unexpected memory spikes

Stay tuned for Part 2, where we explore advanced profiling and memory leak detection!