进程已完成,退出代码为-1073741571

2024-04-25 18:56:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个递归函数,它是寻找欧拉路径。我不认为函数的定义是相关的(但如果有人这么认为,我也会粘贴它)。

问题是,当我用一个大图形运行函数时,我会收到以下众所周知的错误:RuntimeError: maximum recursion depth exceeded in cmp

即使没有上述问题,我知道我需要使用以下命令增加递归限制

import sys
sys.setrecursionlimit(5000)

问题是,无论我使用的是哪个数字,我要么得到最大递归错误,要么我的程序只是暂停,屏幕上没有输出,但:进程已完成,退出代码为-1073741571。我试着用google搜索这些代码,我唯一能找到的问题是Ruby中的问题。你知道我怎样才能克服这个问题吗。

如果这是相关的,我在Windows8 64位,我有足够的内存和64位的python。

由于某种原因,这个问题最近受到了一些关注,我想强调一下,我未能找到解决问题的方法。在无可救药地试图解决这个问题之后,我放弃了,没有递归地重写了它。这也很烦人,但比起研究这个问题,我花在重写整个算法上的时间要少得多。我还想提到,我没有以前的递归代码,所以我将无法复制问题。


Tags: 函数代码in路径图形定义粘贴错误
2条回答

这是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

你可以用这样的方法:

if __name__ == '__main__':
    sys.setrecursionlimit(100000)
    threading.stack_size(200000000)
    thread = threading.Thread(target=your_code)
    thread.start()

这解决了我的递归限制和堆大小限制。

相关问题 更多 >