-1

作为一名本地 Java 开发人员,我想我已经达到了我习惯的情况。

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

我已经到了一个弹出0xc00000fd错误的地步,其中python27.dll包含一条 appcrash 消息。这发生在线程中的函数返回值时。如果我减少回调正在使用的数据量,那么这段代码可以正常工作,所以我很确定堆栈上的东西太多了,并且任何地方都没有递归出错。

我可以打电话stack_size在创建之前调用线程来增加我可用的空间,如果我要弄清楚有多少空间可以满足它,也许这可以工作一段时间。线程将不得不做更多而不是更少的工作,所以这似乎是一个创可贴的情况。

我认为 Python 使用堆内存创建了堆栈,所以这在 Python 中应该不是问题吗?它是我的众多第三方 api 之一,它是真正的罪犯吗?那么,如果没有 C 语言中的低级内存创建决策能力,我如何将其中的一些从堆栈中取出并放入堆内存中?

4

1 回答 1

7

正如Guido 所说, Python 永远不应该崩溃

我并不是说它是不可破解的。我的意思是,如果你让它崩溃,除非被证明是轻率的,否则它就是一个错误。

因此,如果发生崩溃,则将其视为 Python 本身的错误。这是极不可能的,并且很可能您的扩展模块之一正在做坏事,并使用 Python。

我的建议是去掉一些东西,直到你确切地找到问题所在。如果它只发生在核心 python 的东西上,那么你需要提交一个错误报告,否则,它需要去任何扩展模块的开发人员那里导致它。

于 2012-12-19T15:03:48.173 回答