为了账号安全,请及时绑定邮箱和手机立即绑定

是什么导致Python分段错误?

是什么导致Python分段错误?

叮当猫咪 2019-11-28 13:59:11
我正在用Python实现Kosaraju的Strong Connected Component(SCC)图搜索算法。该程序可以在小型数据集上很好地运行,但是当我在超大型图形(超过80万个节点)上运行时,它会显示“ Segmentation Fault”。可能是什么原因造成的?谢谢!附加信息:首先,我在超大型数据集上运行时遇到此错误:"RuntimeError: maximum recursion depth exceeded in cmp"然后我使用设置重置递归限制sys.setrecursionlimit(50000)但出现了“细分错误”相信我这不是一个无限循环,它可以在相对较小的数据上正确运行。程序是否可能耗尽了资源?
查看完整描述

3 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

我了解您已经解决了您的问题,但是对于其他阅读此线程的人,这是答案:您必须增加操作系统为python进程分配的堆栈。


做到这一点的方法取决于操作系统。在linux中,您可以使用以下命令检查ulimit -s当前值,并可以使用以下命令增加当前值:ulimit -s <new_value>


尝试将前一个值加倍,如果不起作用则继续加倍,直到找到一个可用或用完的值。


查看完整回答
反对 回复 2019-11-28
?
茅侃侃

TA贡献1842条经验 获得超21个赞

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机器上运行所有作业。我已经好几个月没有遇到任何执行错误了:)


查看完整回答
反对 回复 2019-11-28
  • 3 回答
  • 0 关注
  • 961 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号