在 NetworkX 中创建大图时出现内存错误

Posted

技术标签:

【中文标题】在 NetworkX 中创建大图时出现内存错误【英文标题】:Memory error creating large graphs in NetworkX 【发布时间】:2020-10-18 14:06:59 【问题描述】:

我决定使用 Python 来处理图形。我使用 NetworkX 加载边缘列表来构建图形。当我尝试使用nx.read_edgelist 加载边缘时,我收到MemoryError

该图有 400 万个节点和 3400 万条边,我的 PC 有 12GB 的 RAM。是否可以将该图加载到 12GB 中?有没有最优解?

【问题讨论】:

【参考方案1】:

NetworkX 使用字典来实现图形数据结构。每个边使用至少 100 字节的内存。因此,如果有 3400 万条边,您可能需要超过 40 GB。

一种解决方案是使用云计算并根据需要扩展内存。

NetworkX 的替代品是graph-tool,它是一个 Python 模块,用 C++ 实现核心数据结构和算法。

另见

What scalability issues are associated with NetworkX? Benchmark of popular graph/network packages.

【讨论】:

以上是关于在 NetworkX 中创建大图时出现内存错误的主要内容,如果未能解决你的问题,请参考以下文章

错误 PHP - 无法分配内存(laravel + aws)

为啥在 PostgreSQL 中创建生成的列时出现错误?

警告:在 plsql 中创建包体时出现编译错误...

在 mysql 中创建触发器时出现错误“1064”?

在 Oracle 中创建函数时出现 PLS-00103 错误

在 pl/sql 中创建过程时出现错误