pyqt5多线程优化_求助: PyQt5 的一个线程占用 CPU 导致另一个线程响应变慢

在Python的PyQt5应用中,一个线程进行OpenCV图像处理时占满CPU,导致串口通信线程响应变慢并出现丢包,同时影响UI线程造成卡顿。使用QThread创建了图像处理线程和串口通信线程,寻求解决方案。
摘要由CSDN通过智能技术生成

我之前是搞嵌入式的,现在要写一个上位机,选择使用 Python+PyQt5 来完成。我的程序有两个执行线程以及一个主线程,主线程初始化完两个执行线程之后,一个执行线程进行串口的数据交互,另一个线程执行一个比较耗时的操作( OpenCV 图像处理),完全占满 CPU 。

这两个线程都是使用 QThread 来完成的,现在遇到了一个问题:图像处理线程长时间的计算,会导致串口线程出现响应变慢的现象(串口丢包导致通信失败),与此同时主线程的 UI 操作也会卡顿。

下面是部分代码。

class MainWindowClass(QMainWindow, Ui_MainWindow):

def __init__(self):

super(MainWindowClass, self).__init__() # 初始化父类

self.setupUi(self) # 初始化窗口

self.imgProcTrd = ThreadImageProc(op_param, op_cam_idx) # 创建图像处理线程

self.imgProcTrd.signalImageSend.connect(self.callback_image_display) # 连接回传到 GUI 的事件

self.serialCommTrd = ThreadSerialComm() # 创建串口通信线程

self.serialCommTrd.signalSerialStatus.connect(self.callback_serial_event)

class ThreadImageProc(QThread):

# 通过类成员对象定义信号对象

signalImageSend = pyqtSignal(numpy.ndarray)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值