Прошу прощения за этот наивный вопрос. Я пытаюсь контролировать использование памяти моего кода на Python и сталкивается с перспективным пакетом memory_profiler
. У меня есть вопрос об интерпретации вывода, созданного декодером @profile.Интерпретация вывода python memory_profiler
Вот пример вывода, который я получаю, запустив свой фиктивный код ниже:
dummy.py
from memory_profiler import profile
@profile
def my_func():
a = [1] * (10 ** 6)
b = [2] * (2 * 10 ** 7)
del b
return a
if __name__ == '__main__':
my_func()
Вызов dummy.py по «питона dummy.py» возвращает таблицу ниже ,
Line # Mem использование Increment Line Содержание
3 8.2 MiB 0.0 MiB @profile
4 def my_func():
5 15.8 MiB 7.6 MiB a = [1] * (10 ** 6)
6 168.4 MiB 152.6 MiB b = [2] * (2 * 10 ** 7)
7 15.8 MiB -152.6 MiB del b
8 15.8 MiB 0.0 MiB return a
Мой вопрос: что делает 8.2 MiB в первой строке таблицы соответствуют. Я предполагаю, что это первоначальное использование памяти самим интерпретатором python; но я не уверен. Если это так, существует ли способ, чтобы это базовое использование автоматически вычиталось из использования памяти в сценарии?
Большое спасибо за ваше время и внимание!
Noushin
В будущем, когда вы спрашиваете о стороннем модуле (особенно тот, который не широко известен как NumPy), предоставьте ссылку. Я добавил его для вас на этот раз. – abarnert
Спасибо abarnert! Будет ли это помнить :) Теперь, когда вы упомянули NumPy, могу ли я быть смелым и задать вам другой вопрос? Вы знаете, возвращает ли memory_profiler точные числа для использования массивов NumPy? (Я получал подозрительные результаты с помощью sys.getsizeof вызовов, прежде чем обнаруживать встроенный модуль «nbytes» массивов. Просто интересно, не ожидаю ли здесь подобных проблем) – user1146372
Я понятия не имею. Но, по-видимому, он получает статистику использования памяти для вашего процесса из ОС или статистики кучи или чего-то подобного, не ходит по распределителям Python. Если это так, будет учитываться любая используемая память, даже если вы не можете понять, кто ее использует.Итак, я бы дал 10: 1 шансы или лучше, что, по крайней мере, в однопоточной программе, вам не о чем беспокоиться. Но на самом деле вам может быть лучше спросить автора. – abarnert