Простой способ получить текущее использование памяти от Гуппи
tl/dr: как мне узнать текущее использование памяти моей программой на Python с использованием Guppy? Есть ли простая команда?
Я пытаюсь отслеживать использование памяти в программе Python, используя гуппи. Это мое первое использование гуппи, поэтому я не очень уверен в его поведении. То, что я хочу, - это возможность составить график общего использования по мере того, как "время" прогрессирует в симуляции. Это основной фрагмент кода для того, что я могу сделать:
from guppy import hpy
import networkx as nx
h = hpy()
L=[1,2,3]
h.heap()
> Partition of a set of 89849 objects. Total size = 12530016 bytes.
> Index Count % Size % Cumulative % Kind (class / dict of class)
> 0 40337 45 3638400 29 3638400 29 str
> 1 21681 24 1874216 15 5512616 44 tuple
> 2 1435 2 1262344 10 6774960 54 dict (no owner)
Но я хотел бы просто знать, каков текущий размер (12530016 байт). Поэтому я хотел бы иметь возможность назвать что-то вроде h.total()
чтобы получить общий размер. Я был бы шокирован, если бы это не было простой командой, но пока, просматривая документацию, я ее не нашел. Это, вероятно, задокументировано, но не там, где я смотрю.
1 ответ
x = h.heap()
x.size
возвращает общий размер. Например:
from guppy import hpy
import networkx as nx
h = hpy()
num_nodes = 1000
num_edges = 5000
G = nx.gnm_random_graph(num_nodes, num_edges)
x = h.heap()
print(x.size)
печать
19820968
что согласуется с Total size
сообщает
print(x)
# Partition of a set of 118369 objects. Total size = 19820904 bytes.
# Index Count % Size % Cumulative % Kind (class / dict of class)
# 0 51057 43 6905536 35 6905536 35 str
# 1 7726 7 3683536 19 10589072 53 dict (no owner)
# 2 28416 24 2523064 13 13112136 66 tuple
# 3 516 0 1641312 8 14753448 74 dict of module
# 4 7446 6 953088 5 15706536 79 types.CodeType
# 5 6950 6 834000 4 16540536 83 function
# 6 584 0 628160 3 17168696 87 dict of type
# 7 584 0 523144 3 17691840 89 type
# 8 169 0 461696 2 18153536 92 unicode
# 9 174 0 181584 1 18335120 93 dict of class
# <235 more rows. Type e.g. '_.more' to view.>