繁体   English   中英

通过networkx中的add_weighted_edges_from加载8M边缘时出现MemoryError

[英]MemoryError when loading over 8M edges by add_weighted_edges_from in networkx

我使用Networkx 2.3 / Python 3.7 / Windows 10 64bit / 32GB RAM并使用add_weighted_edge_from通过以下代码将近8M边添加到图形中:

grows = [(int(row['source']),int(row['target']),int(row['weight'])) for row in rows]    
g = nx.Graph()    
g.add_weighted_edges_from(grows)

它导致我的可用ram 6GB增加,而我仍然有超过14GB的可用ram,但是它崩溃了,并且出现了如下的memoryerror:

Traceback (most recent call last):
  File "test.py", line 13, in <module>
  File "C:\...\networkx\classes\graph.py", line 1013, in add_weighted_edges_from
  File "C:\...\networkx\classes\graph.py", line 972, in add_edges_from
MemoryError

有什么方法可以创建此图?

尝试使用以下代码来检查可以向图形添加多少行:

import networkx as nx
g = nx.Graph()
for i, row in enumerate(rows):
    g.add_edge(int(row['source']),int(row['target']),weight=int(row['weight']))
    if i % 10000:
        print(i)

这样一来,您将节省一些内存,因为您不需要创建grows列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM