0

我设计了一个 Python 软件来从我的微控制器收集数据并制作实时绘图:

在此处输入图像描述

我的 GUI 中有十二个 matplotlib 动画(GUI 是用 PyQt 设计的)。每个 matplotlib 动画都连接到一个 TCP 线程,通过该链接接收浮点数。收到浮点数后,matplotlib 动画会在图形中添加一个新点。欢呼,我们有现场图!

我的软件可以平稳运行几秒钟(有时长达半分钟)。然后灾难降临。Windows 提到“Python 已停止工作”。我什至没有在我的终端窗口中打印异常报告(因为它通常会发生在我的所有其他错误中)。Windows 询问我是否要调试 Python 应用程序,并建议为此使用 Visual Basic。在 Visual Basic 中,我收到以下错误报告:

Unhandled exception at 0x00007FFC596CE6FC (ntdll.dll) in
python.exe: 0xC0000374: A heap has been corrupted
(parameters: 0x00007FFC597222B0).

Unhandled exception at 0x00007FFC56071F28 in python.exe:
Microsoft C++ exception: std::bad_alloc at memory
location 0x0000003DBA30E8F0.

Exception thrown at 0x0000000000000000 in python.exe:
0xC0000005: Access violation executing location
0x0000000000000000.

我重新启动一切,然后再试一次。灾难再次袭来,我在 Visual Basic 中收到以下错误报告:

Unhandled exception at 0x00000000660E8D61 (QtGui4.dll) in python.exe:
0xC0000005: Access violation reading location 0x0000000000000020.

再一次,我重新开始另一个试验。灾难再次袭击我:

Unhandled exception at 0x00007FFC596CE6FC (ntdll.dll) in python.exe:
0xC0000374: A heap has been corrupted (parameters: 0x00007FFC597222B0).

不幸的是,我不知道这些错误报告是什么意思。我已经用谷歌搜索了QtGui4.dllntdll.dll。我在我的计算机上找到了几个修复 dll 的程序,但 Norton 防病毒软件告诉我我不能信任它们。所以我现在别无选择,只能求助于 StackOverflow。

在此先感谢您的帮助。

编辑 :我已按照您的建议更改 matplotlib 后端matplotlib.use("Qt4Agg"),但没有帮助。

4

1 回答 1

2

我相信这个问题现在已经解决了。这是问题的根本原因。我以线程不安全的方式从另一个线程访问了我的 GUI(例如实时图、LED 等)。该应用程序在一段时间内(半分钟)运行良好,但之后不可避免地会惨遭崩溃。

我通过使用信号/插槽机制来修复它。这就是(指向另一个 StackOverflow 问题的链接):

PyQT 线程的最简单方法

对不起给您带来不便。

于 2016-05-16T15:31:56.093 回答