Skip to content

memory_profilers

Memory profiler.

profile_memory(func)

Decorator to profile a function's memory usage.

Parameters:

Name Type Description Default
func Callable

The function to be profiled.

required

Returns:

Name Type Description
Callable Callable

The decorated function.

Source code in src/orsm/profilers/memory/memory_profilers.py
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
@disable_decorator(cli.profiling_disabled, reason="Memory profiling has not been enabled from the command line.")
def profile_memory(func: Callable) -> Callable:
    """
    Decorator to profile a function's memory usage.

    Parameters
    ----------
    func :
        The function to be profiled.

    Returns
    -------
    Callable:
        The decorated function.

    """

    @wraps(func)
    def wrapper(*args, **kwargs):
        tracemalloc.start()
        result = func(*args, **kwargs)
        current, peak = tracemalloc.get_traced_memory()
        tracemalloc.stop()
        logging.debug(f'Memory usage for {func.__name__}: Current={current / 10 ** 6}MB, Peak={peak / 10 ** 6}MB')
        memory_profiler.store(name=func.__name__, peak=peak)
        return result

    return wrapper