Как рассчитывается использование памяти при вызове функции в Python «tracemalloc»?Python

Программы на Python
Ответить
Anonymous
 Как рассчитывается использование памяти при вызове функции в Python «tracemalloc»?

Сообщение Anonymous »

Я хочу задать вопрос относительно расчета использования памяти Python в Tracemalloc. Я приведу пример. У меня есть код Python, структурированный таким образом.

Код: Выделить всё

def measure_performance(func):

@wraps(func)
def wrapper_func(*args, **kwargs):
tracemalloc.start()
start_time = perf_counter()
res = func(*args, **kwargs)
current, peak = tracemalloc.get_traced_memory()
finish_time = perf_counter()
print("\n")
print(f'Function: {func.__name__}')
print(f'Memory usage:\t\t {current / 10**6:.6f} MB \n'
f'Peak memory usage:\t {peak / 10**6:.6f} MB ')
print(f'Time elapsed is seconds: {finish_time - start_time:.6f}')
print(f'Run on: {datetime.today().strftime("%Y-%m-%d %H:%M:%S")}')
print(f'{"-"*40}')
tracemalloc.stop()

return res

return wrapper_func

class ClassName:
def __init__():
...

@measure_performance
def A():
...

@measure_performance
def B():
...

@measure_performance
def C():
.
.
.

@measure_performance
def main():
classname = ClassName()
a = classname.A()
b = classname.B()
c = classname.C()
...

if __name__ == "__main__":
main()

При запуске приведенного выше кода я получаю такой результат

Код: Выделить всё

Function: A
Memory usage:            191.501034 MB
Peak memory usage:       352.158040 MB
Time elapsed is seconds: 79.373798
Run on: 2024-12-28 00:37:05

Function: B
Memory usage:            1.591783 MB
Peak memory usage:       14.774033 MB
Time elapsed is seconds: 2.095723
Run on: 2024-12-28 00:37:07

Function: C
Memory usage:            2.196528 MB
Peak memory usage:       750.238682 MB
Time elapsed is seconds: 190.336022
Run on: 2024-12-28 00:40:18

Function: main
Memory usage:            0.000000 MB
Peak memory usage:       0.000000 MB
Time elapsed is seconds: 272.908980
Run on: 2024-12-28 00:40:18
Мой вопрос заключается в том, что для каждой функции мы получаем некоторое использование памяти и пиковое использование памяти, но для основной мы получаем использование памяти 0,0 и пиковое использование памяти. Почему это происходит, хотя мы вызываем ClassName в main? Это нормальное поведение или как это работает?

Подробнее здесь: https://stackoverflow.com/questions/793 ... racemalloc
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»