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

dem*_*lem -1 python stack-overflow multithreading

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

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

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

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

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

Gar*_*tty 7

Python应该永远不会崩溃,Guido说:

我不是说它不可救药.我说如果你崩溃了,除非经过证实,否则这是一个错误.

因此,崩溃被认为是Python本身的一个错误.这是非常不可能的,并且很可能你的扩展模块中有一个是做坏事,并且用它来使用Python.

我的建议是删除的东西,直到你找到问题所在.如果它只发生核心python的东西,那么你需要提交一个错误报告,否则,它需要转到任何扩展模块导致它的开发人员.