我有一个多线程(通过pyqt)应用程序,它绘制实时数据(数据在第二个线程中处理并传递给gui线程以通过pyqt信号绘图)。如果我将鼠标放在应用程序上,它将继续全速运行(通过调用app.processEvents()
之间的时差来衡量)。一旦我开始移动鼠标,更新速率就会慢慢爬行,当我停止移动鼠标时会再次增加。
有谁知道如何解决此问题/调试问题?
代码非常冗长和复杂,所以我不想在这里发布。谢谢!
答案 0 :(得分:2)
你可能在场景中有接受自己鼠标输入的项目,但如果没有看到代码就很难说。特别是要警惕可点击的复杂绘图线 - 计算鼠标光标与这些复杂形状的交叉点是非常昂贵的。
解决性能问题的最好方法(有些人会这么说)是分析你的应用程序:在不移动鼠标的情况下运行python -m cProfile -s cumulative your_script.py
一次,再用鼠标移动(确保花费大量时间移动鼠标) ),然后比较输出,看看翻译所花费的时间。