【发布时间】:2012-04-19 14:27:47
【问题描述】:
我正在 Python 中实现 Kosaraju 的强连通分量 (SCC) 图搜索算法。
该程序在小数据集上运行良好,但是当我在超大图(超过 800,000 个节点)上运行它时,它显示“Segmentation Fault”。
这可能是什么原因?谢谢!
附加信息: 首先我在超大数据集上运行时遇到了这个错误:
"RuntimeError: maximum recursion depth exceeded in cmp"
然后我使用重置递归限制
sys.setrecursionlimit(50000)
但出现“分段错误”
相信我,这不是一个无限循环,它在相对较小的数据上运行正确。可能是程序耗尽了资源?
【问题讨论】:
-
也许你可以看看CrashingPython
-
这是在纯 Python 中运行还是使用 C 扩展模块?如果它是纯 Python,那么它就是一个错误,恭喜你。如果您使用的是 c 模块,那么段错误可能来自那里。
-
纯python。该程序在相对较小的数据集上运行良好,这让我认为代码是正确的。
-
根据 Python 文档:
-
根据 Python 文档:::::: 可能的最高限制取决于平台。当用户有一个需要深度递归的程序和一个支持更高限制的平台时,她可能需要将限制设置得更高。这应该小心完成,因为过高的限制会导致崩溃。:::::: 你没有指定操作系统。对 crash 的引用可能意味着您的操作系统上的 segmentaion fault。尝试较小的堆栈。但是您使用的 IIRC 算法将 rntire SSC 放在堆栈上,因此您可能会用完堆栈。
标签: python segmentation-fault large-data