我有一个递归函数,它正在寻找欧拉路径。我不认为函数的定义是相关的(但如果有人这么认为,我也会粘贴它。)
问题是当我运行带有大图的函数时,我收到以下众所周知的错误:RuntimeError: maximum recursion depth exceeded in cmp
即使没有上述问题,我也知道我需要使用以下命令增加递归限制
import sys
sys.setrecursionlimit(5000)
问题在于,无论我使用的是什么号码,我都会得到最大递归错误或我的程序暂停,屏幕上没有输出但是:处理完成后退出代码-1073741571 。我试图谷歌这个代码,我能找到的唯一问题是Ruby中的问题。知道如何克服这个问题。
如果这是相关的我在Windows 8 64位,我有足够的RAM,我有64位python。
仅仅因为某些原因这个问题最近引起了一些关注,我想强调一点,我无法找到问题的解决方案。在无可救药地试图解决问题之后,我放弃了并且在没有递归的情况下重写了它。这也很烦人,但是我花了很少的时间重写整个算法,而不是我花在调查这个问题上。我还想提一下,我没有以前的递归代码,所以我无法复制问题。
答案 0 :(得分:6)
您可以使用以下内容:
if __name__ == '__main__':
sys.setrecursionlimit(100000)
threading.stack_size(200000000)
thread = threading.Thread(target=your_code)
thread.start()
这解决了我的递归限制和我的堆大小限制。
答案 1 :(得分:4)
这是Microsoft"堆栈溢出/堆栈耗尽的签名整数表示"错误代码0xC00000FD。
您可以尝试增加可执行文件的堆栈大小,如答案中所述:How to overcome Stack Size issue with Visual Studio (running C codes with big array)
任何时候你在Windows中看到奇怪的,大的负退出代码,将它们转换为十六进制,然后在ntstatus错误代码http://msdn.microsoft.com/en-us/library/cc704588.aspx中查找它们