是什么导致Python分段错误?

我正在用Python实现Kosaraju的Strong Connected Component(SCC)图搜索算法。


该程序可以在小型数据集上很好地运行,但是当我在超大型图形(超过80万个节点)上运行时,它会显示“ Segmentation Fault”。


可能是什么原因造成的?谢谢!


附加信息:首先,我在超大型数据集上运行时遇到此错误:


"RuntimeError: maximum recursion depth exceeded in cmp"

然后我使用设置重置递归限制


sys.setrecursionlimit(50000)

但出现了“细分错误”


相信我这不是一个无限循环,它可以在相对较小的数据上正确运行。程序是否可能耗尽了资源?


叮当猫咪
浏览 962回答 3
3回答

呼啦一阵风

我了解您已经解决了您的问题,但是对于其他阅读此线程的人,这是答案:您必须增加操作系统为python进程分配的堆栈。做到这一点的方法取决于操作系统。在linux中,您可以使用以下命令检查ulimit -s当前值,并可以使用以下命令增加当前值:ulimit -s <new_value>尝试将前一个值加倍,如果不起作用则继续加倍,直到找到一个可用或用完的值。

茅侃侃

Google搜索找到了这篇文章,但没有看到下面的“个人解决方案”讨论。我最近在Linux的Windows子系统上对Python 3.7的烦恼是:在具有相同Pandas库的两台计算机上,一台给我segmentation fault,另一台报告警告。不清楚哪个是较新的,但是“重新安装” pandas可以解决问题。我在越野车上运行的命令。conda install pandas更多详细信息:我正在运行相同的脚本(通过Git同步),并且两者都是带有WSL + Anaconda的Windows 10计算机。在这里截屏以说明情况。另外,在命令行python会抱怨的机器上Segmentation fault (core dumped),Jupyter实验室每次仅重新启动内核一次。更糟糕的是,根本没有发出警告。几个月后更新:我不再在Windows计算机上托管Jupyter服务器。现在,我在Windows上使用WSL来获取在Linux服务器上打开的远程端口,并在远程Linux机器上运行所有作业。我已经好几个月没有遇到任何执行错误了:)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python