Простой способ получить текущее использование памяти от Гуппи

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.>
Другие вопросы по тегам