pyqt与threading结合,概率性导致程序闪退
前因
为了方便调试设备,打算用python写个界面程序,可以实时观察设备的升级过程,后面考虑允许多个设备同时OTA升级,所以打算给每个设备的升级开一个线程。
遇到的问题
给单个设备升级的时候,概率性出现以下无提示报错:
Process finished with exit code -1073741819 (0xC0000005)
排故过程
1. 代码
我一度怀疑代码有问题,但后面基本排除了,因为闪退的时候程序的运行位置是不确定的,并且有时代码可以跑好几轮.
2. 多线程共享变量
我的代码思路大概如下
全局变量存储ui指针
主线程:创建ui,并将地址存在全部变量里
子线程1:创建Http服务器,并实时监听客户端
子线程2-n:为链接的设备创建ota任务,并在界面显示实时进度
所以存在子线程需要同时操作界面,可能导致异常的发生。
因此我创建了两个简单的线程:
def function(x: int, y):
while True:
x += 2
if True:
print(threading.currentThread().name)
win.ui.pte_serderInfo.appendPlainText(threading.currentThread().name)
else:
print(threading.currentThread().name + " {}".format("False"))
sleep(0.1)
value1 = 1
t = threading.Threa
311



被折叠的 条评论
为什么被折叠?



