Code-Memo

Memory Management and Performance Optimization

Garbage Collection in Python

Python uses automatic memory management via garbage collection to reclaim memory occupied by objects that are no longer in use, freeing resources for reuse.

import gc

# Disable automatic garbage collection
gc.disable()

Memory Profiling and Optimization Techniques

Memory Profiling

Memory profiling helps identify memory-intensive parts of your code, memory leaks, and areas for optimization.

pip install memory_profiler
# script.py
from memory_profiler import profile

@profile
def my_function():
    a = [1] * (10**6)
    b = [2] * (2 * 10**7)
    del b
    return a

if __name__ == '__main__':
    my_function()
Optimization Techniques

Using Caching and Memoization

Caching and memoization are techniques to store computed results for future use, improving performance by avoiding redundant computations.

Example using lru_cache:

from functools import lru_cache

@lru_cache(maxsize=None)
def fibonacci(n):
    if n <= 1:
        return n
    return fibonacci(n-1) + fibonacci(n-2)

# Usage:
print(fibonacci(10))  # Output: 55 (computed once, cached for subsequent calls)

Benefits of Memory Management and Optimization