Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python线程中避免堆栈溢出错误的方法_Python_Multithreading_Stack Overflow - Fatal编程技术网

Python线程中避免堆栈溢出错误的方法

Python线程中避免堆栈溢出错误的方法,python,multithreading,stack-overflow,Python,Multithreading,Stack Overflow,作为一名本地Java开发人员,我认为我已经达到了我所习惯的状态 我正在使用PyDev开发一个多线程的Python2.7应用程序,该应用程序在64位Windows 7上从Eclipse运行。它是多线程的,因为它使用wxPython,所以它使用GUI主线程和重载线程(my或my有一些重载),每个回调一个线程 我已经到达了一个点,在python27.dll中出现了一个弹出的0xc0000fd错误,并显示了一条appcrash消息。这发生在线程中的函数返回值时。如果我减少回调处理的数据量,代码就可以很好

作为一名本地Java开发人员,我认为我已经达到了我所习惯的状态

我正在使用PyDev开发一个多线程的Python2.7应用程序,该应用程序在64位Windows 7上从Eclipse运行。它是多线程的,因为它使用wxPython,所以它使用GUI主线程和重载线程(my或my有一些重载),每个回调一个线程

我已经到达了一个点,在
python27.dll
中出现了一个弹出的
0xc0000fd
错误,并显示了一条appcrash消息。这发生在线程中的函数返回值时。如果我减少回调处理的数据量,代码就可以很好地工作,因此我非常确定堆栈上的内容太多,任何地方都不会出现错误的递归

在创建之前,我可以在线程上调用
stack\u size
,以增加可用空间,如果我想知道有多少空间可以满足它,这可能需要一段时间。线程将不得不做更多的工作,而不是更少的工作前进,所以这似乎是一个创可贴的情况。 我认为Python使用堆内存创建了堆栈,所以这在Python中不应该是个问题?它是我的许多第三方API中的一个,是真正的罪犯吗?那么,如果没有C语言中的低级内存创建决策能力,我如何从堆栈中获取一些内存并将其放入堆内存中呢?

,如下所示:

我不是说这是不可接受的。我是说如果你撞坏了它 除非被证明是愚蠢的,否则就是错误

因此,如果崩溃发生,它被认为是Python本身的一个bug。这是极不可能的,而且很可能您的一个扩展模块正在做一些不好的事情,并且正在使用Python


我的建议是去掉一些东西,直到你找到问题所在。如果它只发生在核心python的东西上,那么您需要提交一份bug报告,否则,它需要提交给引起它的任何扩展模块的开发人员。

解释器崩溃显然是相当不正常的。是否有任何方法可以生成一个低级别的崩溃报告,包括堆栈跟踪(我指的是CPU堆栈,而不是Python堆栈)、寄存器值、线程等?作为预备,进入visual studio 2010。我看到行multiarray.pyd!00000000052e13b3()一遍又一遍。也许是Numpy或Numpy/Scipy交互?最后一行是python27.dll!00000000 1E0A0A36。我将尝试深入研究python和寄存器等。查看模块列表,有3个外部模块:scipy、sklearn和wx-2-8-msw-unicode(即wxPython)。线程列表列出了7个线程。列出位置为1e0a0077的线程ID 6284是其崩溃的位置。在这一点上,我真的在想,Scipy(0.11.0)、Numpy(1.6.2 MLK)和64位Windows的结合正是我在做的事情。这并不完全正确。有时递归可能会导致问题,例如,在酸洗大型对象时。帮我解决了。