问题描述
我已决定使用Python处理图形。我使用NetworkX加载边缘列表以构建图形。当我尝试使用nx.read_edgelist
加载边缘时,我收到了MemoryError
。
该图有400万个节点和3,400万条边,我的电脑有12GB的RAM。可以将该图加载到12GB吗?有什么最佳解决方案吗?
解决方法
NetworkX使用字典来实现图形数据结构。每个边缘至少使用100个字节的内存。因此,如果边缘有3400万个,则可能需要超过40 GB。
一种解决方案是使用云计算并根据需要扩展内存。
NetworkX的替代方法是graph-tool,它是一个Python模块,可在C ++中实现核心数据结构和算法。