相关疑难解决方法(0)

Python:超出了最大递归深度

我有以下递归代码,在每个节点我调用sql查询以获取属于父节点的节点.

这是错误:

Exception RuntimeError: 'maximum recursion depth exceeded' in <bound method DictCursor.__del__ of <MySQLdb.cursors.DictCursor object at 0x879768c>> ignored

RuntimeError: maximum recursion depth exceeded while calling a Python object
Exception AttributeError: "'DictCursor' object has no attribute 'connection'" in <bound method DictCursor.__del__ of <MySQLdb.cursors.DictCursor object at 0x879776c>> ignored
Run Code Online (Sandbox Code Playgroud)

我调用以获取sql结果的方法:

def returnCategoryQuery(query, variables={}):
    cursor = db.cursor(cursors.DictCursor);
    catResults = [];
    try:
        cursor.execute(query, variables);
        for categoryRow in cursor.fetchall():
            catResults.append(categoryRow['cl_to']);
        return catResults;
    except Exception, e:
        traceback.print_exc();
Run Code Online (Sandbox Code Playgroud)

我实际上对上述方法没有任何问题,但我还是把它放在了正确的问题概述上.

递归代码:

def leaves(first, path=[]):
    if first:
        for elem in …
Run Code Online (Sandbox Code Playgroud)

python recursion max tree-traversal depth

79
推荐指数
1
解决办法
17万
查看次数

Python:Linux,Mac和Windows的硬递归限制是多少?

Python的sys模块提供了一个函数 setrecursionlimit,可以让您更改Python的最大递归限制.文档说:

最高可能的限制取决于平台.

我的问题是:在CPython下,各种平台的最高限制是多少?我想知道Linux,Mac和Windows的价值.

更新:我们可以避免"你做错了"的答案吗?我知道尝试进行非常深度的递归通常是一个坏主意.我已经考虑了我的具体情况的利弊,并决定我想这样做.

python recursion platform

31
推荐指数
2
解决办法
9698
查看次数

如何使用Visual Studio克服堆栈大小问题(使用大数组运行C代码)

我是第一次使用Visual Studio 13编译c代码.代码运行完全正常,大小为64*64的2d阵列(我的程序中有一些数组)但如果我将数组大小增加到128*128则不会运行(但编译正确).相反,它会给出一条消息".exe已停止工作".如果我从linux运行代码,我的机器有4GB内存和相同的程序运行128*128阵列.

让我提供一些更多细节:我在同一台机器上使用英特尔C编译器(非商业版)从linux运行相同的代码.但由于某些问题,我现在被限制在Windows环境中工作.我搜索并安装了两个c编译器(1)Visual Studio 13和(2)Borland C.两者都适用于小阵列.但是当我增加数组大小时,Visual Studio会给出消息".exe已停止工作".我使用"开发人员命令提示符VS 13"中的"cl"编译程序.

我觉得问题在于堆栈大小.

在链接详细说明中(如下所示)我在linux环境中看到了一个命令"ulimit"来增加堆栈大小.我记得几年前使用它.

我觉得我们接近解决方案,但我的Windows(和VS 2013)的问题仍然存在,因为我没能执行dumpbin /headers executable_fileeditbin /STACK:size.其实我觉得我不知道如何执行它们.我试图从"开发人员命令提示符VS 13",以及使用运行执行它们(windows启动自下而上>搜索(运行) - >运行(托)).如果可能,我请您提供更多详细信息.

我搜索并找到了这个网站,并在这里思考可以找到解决方案.

请帮忙.我想从Windows运行Visual Studio 13.

c windows stack-overflow visual-studio

8
推荐指数
1
解决办法
2万
查看次数

Python 中的进程已完成,退出代码 -1073741571 (0xC00000FD)

我正处于学习Python的早期阶段。我尝试计算较小值的阿克曼函数。它工作得很好,直到值为 (3,7)。任何高于该值(例如 3,8)的值都会引发此错误。[进程已完成,退出代码 -1073741571 (0xC00000FD)]

首先,我检查是否达到递归限制,但该过程在远低于设置的递归限制时停止(在本例中它设置为最大值)

import sys
sys.setrecursionlimit(999999999)
count = 0
def cf():
    global count
    count+=1
cf()
def Ack(m,n):
    if  m==0:
        x=n+1
        cf()
        return x
    elif m>0 and n==0:
        x=Ack(m-1,1)
        cf()
        return x
    elif m>0 and n>0:
        x=Ack(m-1,Ack(m,n-1))
        cf()
        return x
a,b=map(int,input("Enter values").split())
print(a,b)
result=Ack(a,b)
print(result)
print(count)
Run Code Online (Sandbox Code Playgroud)

python python-3.x

6
推荐指数
1
解决办法
6560
查看次数

如何避免Python中的线程中的Stack Overflow错误

作为一个本地Java开发人员,我认为我已经达到了我习惯的情况.

我正在使用PyDev开发一个多线程Python 2.7应用程序,并在Windows 7 64位上运行Eclipse.它是多线程的,因为它使用wxPython,因此它使用GUI主线程和繁重的提升线程(以及我或我的有一些繁重的工作),每个回调一个线程.

我已达到一个点,我用appcrash消息得到一个弹出0xc00000fd错误python27.dll.这是因为线程中的函数返回值.如果我减少了回调正在使用的数据量,那么这段代码工作正常,所以我很确定堆栈上有太多的东西,并且没有任何递归变坏.

我可以stack_size在创建之前调用线程以增加可用空间,如果我想弄出多少空间可以满足它,这可能会有效.该线程将不得不做更多而不是更少的工作,所以这似乎是一个创可贴的情况.

我以为Python使用堆内存创建了堆栈,所以这在Python中应该不是问题?它是我的许多第三方apis之一,真正的罪犯?那么如果没有我在C中可以获得的低级内存创建决策能力,我如何从堆栈中获得一些内存并进入堆内存?

python stack-overflow multithreading

-1
推荐指数
1
解决办法
1402
查看次数