tl / dr:如何使用Guppy获取我的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()
的内容来获取总大小。如果这不作为一个简单的命令存在,我会感到震惊,但到目前为止,查看我还没有找到它的文档。它可能记录在案,只是不在我看的地方。
答案 0 :(得分:2)
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.>