如何检查网络图所用的内存量?
有一种检查节点和边缘数量的方法,但我找不到一个用于内存使用的方法?在NetworkX 2.0及以后,
G.edges
和G.nodes
返回迭代器,因此将其大小直接工作不起作用,它只会为您提供迭代器对象的大小。您需要迭代这些对象,并获取每个边缘和节点的大小,然后总和这些对象以估算图形使用的内存。
import networkx as nx
import sys
G = nx.Graph()
# populate the graph with nodes and edges
edge_mem = sum([sys.getsizeof(e) for e in G.edges])
node_mem = sum([sys.getsizeof(n) for n in G.nodes])
print("Edge memory:", edge_mem)
print("Node memory:", node_mem)
print("Total memory:", edge_mem + node_mem)
sys.getsizeof(G.edge) + sys.getsizeof(G.node)
可以在字节中找到网络图的近似内存使用。
import networkx as nx
from pympler import asizeof
G = nx.Graph()
graph_memory = asizeof.asizeof(G)