我正在尝试导入一个大的 LGL 文件(~2GB),并且我正在尝试使用 igraph 导入它
graph = Graph.Read_Lgl("Biggraph.lgl")
它抛出的错误是
Traceback (most recent call last):
File "graph.py", line8, in <module>
graph = Graph.Read_Lgl("Biggraph.lgl")
igraph.core.InternalError: Error at foreign.c:359: Parse error in LGL file, line 9997 (memory exhausted), Parse Error
我不确定这里到底发生了什么。内存耗尽错误让我认为分配给 python(或底层 C)的内存在尝试读取文件时已被用完,但它几乎立即发生,就像它甚至没有一样尝试做很多事情。也许它会查看文件大小并说“哇,不能这样做。”
说实话,我不知道发生了什么。我对 iGraph 的假设是它可以处理非常大的图表,而且我不认为我的图表对于它来说太大了。
我确实自己生成了 lgl 文件,但我相信我的语法是正确的。这个错误看起来并不像是我的 lgl 文件有问题,但我可能是错的(“解析错误”有点让我害怕)。
我只是想在这里尝试一下,看看是否有人更热衷于 iGraph 的操作方式,知道如何快速解决这个问题(或扩展内存)。谢谢。
最佳答案
郑重声明,发布者在 igraph 库中发现了一个错误,我们正在努力修复。该问题是由 LGL 格式的 bison
解析器规范中的右递归规则引起的。一旦我们在项目主干中有一个官方补丁,如果其他人遇到同样的问题,我会在这里发布补丁的 URL。
更新: 补丁的 URL 是:
- http://bazaar.launchpad.net/~igraph/igraph/0.5-main/revision/1696 (适用于 igraph 0.5.x)
- http://bazaar.launchpad.net/~igraph/igraph/0.6-main/revision/2543 (适用于 igraph 0.6)
关于python - 导入大 iGraph 内存耗尽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7435828/