gpt4 book ai didi

python - 如何监控 networkx 图创建的状态?

转载 作者:太空宇宙 更新时间:2023-11-04 08:04:20 25 4
gpt4 key购买 nike

我有一个数据集,它是一个代表网络的 csv/txt 文件。文件中的每一行都包含两个以逗号分隔的节点名称。我的数据文件涉及大约 330k 个节点和大约 550k 个边。我正在尝试使用以下代码创建一个非常基本的图表(是的,我知道它会非常困惑):

import networkx as nx
import matplotlib.pyplot as plt
import sys
import numpy as np

f = open('dataFile.txt', 'rb')
G = nx.read_edgelist(f, delimiter=',', nodetype=str)
f.close()

print(nx.number_of_nodes(G))
print(nx.number_of_edges(G))

plt.figure(1)
nx.draw(G)
plt.savefig("graph.pdf")

我在 AWS EC2 m4.4xlarge 实例上运行它,它占用 100% 的 CPU 和仅 1% 的内存。

我对此持怀疑态度,因为我认为 networkx 是内存密集型的,而不是 CPU pig 。现在,它正在 nx.draw 命令上旋转。有什么方法可以监控图形生成的进度吗?

最佳答案

Networkx 确实不适合这项任务。它非常慢。此外,matplotlib (nx.draw) 永远不会成功绘制那么多对象。

如果您想可视化,您将需要一个工具来查看布局的每个步骤,您可以在其中修改正在发生的事情。

即使它有问题,我还是推荐 Gephi为了这。唯一适用于大图的布局算法是 OpenOrd (Gephi 插件)。不要忘记在运行算法时不要显示边缘。

作为处理图表规模的通用库,我推荐 graph-tool .使用 C++ 后端和 python 接口(interface),它比 networkx 快得多。画的也比较好。

最后,当您达到百万节点规模时,您可以切换到大型图形分析框架,例如 Graphlab-CreateApache GraphX .

关于python - 如何监控 networkx 图创建的状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34170634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com