pyqt与threading结合,概率性导致程序闪退

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

前因

为了方便调试设备,打算用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
从一次LabelImg闪退报错,聊聊Python环境管理PyQt5的版本“玄学” 每次遇到类似LabelImg闪退的问题,都是优化你开发工作流的机会。建立自己的问题排查清单,记录每次环境冲突的解决方案,久而久之你会形成自己的"兼容直觉"——这才是高级开发者真正的价值所在。报错——这种崩溃瞬间几乎是每个AI开发者的必经之路。但比解决眼前问题更重要的,是理解背后隐藏的Python环境管理哲学。本文将带你从一次具体的闪退事件出发,系统掌握Python多版本共存的生存法则,特别是PyQt5这类GUI库的版本"玄学"应对策略。Conda提供的环境隔离才是现代Python开发的救星。 阅读详情

相关推荐

避坑指南:Matplotlib+PyQt5窗口控制那些奇葩问题(最大化闪退/置顶失效)

本文深入探讨了MatplotlibPyQt5结合时遇到的窗口状态管理难题,如最大化闪退和置顶失效。文章分析了底层原理,提供了跨平台的稳健解决方案和诊断工具,帮助开发者有效规避这些常见陷阱,提升GUI应用的稳定用户体验。

weixin_29053577的博客 311

解决pyqt5异常退出无提示信息的问题

主要介绍了解决pyqt5异常退出无提示信息的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

告别闪退!用Anaconda+Python3.8在Windows上稳定运行LabelImg的保姆级教程

本文提供了一份详细的LabelImg安装使用教程,帮助用户在Windows系统上通过Anaconda和Python3.8稳定运行LabelImg,解决常见的闪退问题。教程涵盖环境配置、依赖安装、路径优化及高级稳定技巧,适合计算机视觉初学者和数据标注工作者。

weixin_34032621的博客 369

qt 线程问题

Qt 多线程中,哪些因素会影响导致线程终止? 我用继承QThread方式和moveToThread方式创建的线程都老是跑着跑着就自动终止了? 线程终止无非几种情况。 1 自己执行完了终止了。 2 线程内有代码在某种条件下退出了。 3 被外部强行给终止了。你可以排除排除 ...

vincent3678的博客 647

PyQtPyQt的缺陷及意外退出的可能原因

避免PyQt崩溃的好的做法。如果你的PyQt程序经常无原因的崩溃,并且无法追踪调试,那么看看这篇文章可能对你有所帮助,仅仅是可能有所帮助。

huanqing2010的专栏 4417

pyqt创建window窗口闪退情况解决(避坑)

1. 使用qt designer创建窗口界面 这个都很熟悉了,就不重复说明了。(自行百度) 2. pyqt将 .ui 文件转成python代码 cd到 .ui文件的目录,使用指令即可完成。得到一个py文件(一个类) 红色部分是我自己加上去的,只是为了更好看懂代码,调试代码。 3. 运行pyqt生成的python代码,生成界面 这里,需要添加几行代码!直接在Ui_Dialog类的py文件尾部添加如下代码: if __name__ == "__main__": app = QApplication(

biao169的博客 7636

关于pyinstaller打包pyqt5出现的相关问题

关于pyinstaller打包pyqt5出现的相关问题

WJSWRY的博客 1538

MovieHeavens 打包踩坑指南:10分钟解决 PyQt5.sip 缺失等常见报错

**MovieHeavens** 是一款基于 PyQt5 的简单电影搜索工具,输入片名即可一键搜索「电影天堂」的影视资源并提取下载链接,全程无广告、无页面跳转。很多新手本地运行一切正常,一旦用 PyInstaller 打包就连续踩坑,最常见的报错就是 `ModuleNotFoundError: No module named 'PyQt5.sip'`。这份 MovieHeavens 打包踩坑指南,

gitblog_07362的博客 319

PyQt5程序打包exe后,图标不显示、依赖缺失?这些坑我都替你踩过了

本文详细解析了PyQt5程序打包为exe时常见的图标不显示和依赖缺失问题,提供了从路径处理、ICO文件格式到PyInstaller配置的完整解决方案。特别针对PyInstaller打包过程中的资源包含、依赖树检测和版本冲突等痛点,给出了实战验证的有效方法,帮助开发者高效完成Python应用打包。

weixin_27064205的博客 374

Anaconda Spyder 闪退终极解决方案:从排查到修复实操

摘要: 针对Anaconda中Spyder频繁闪退问题,本文提供系统化解决方案。闪退主因包括环境冲突、版本不兼容、配置损坏及资源不足。解决步骤分四级:1)重启并重置临时配置;2)更新Spyder及依赖包;3)重建纯净虚拟环境;4)清理配置文件缓存。进阶方案含权限调整、日志分析及显卡设置优化,并强调避免pip/conda混用以预防问题。多数闪退可通过更新或重建环境解决,复杂问题需结合日志定位。保持规范使用习惯可显著降低闪退风险。

jingpide9527的博客 1579

PyQt5程序打包瘦身实战:从300MB到40MB的优化策略

Python桌面应用开发中,打包分发是产品化的重要环节。PyInstaller作为常用的打包工具,其工作原理是将Python解释器、依赖库及资源文件封装成独立可执行文件,确保程序跨环境运行。然而,默认的‘全家桶’式打包机制常导致生成文件体积臃肿、启动缓慢,严重影响用户体验和分发效率。通过分析依赖收集原理,开发者可实施精准控制:利用虚拟环境隔离最小依赖集,在spec文件中排除未使用的PyQt5子模块(如QtWebEngine、QtMultimedia),结合UPX压缩可执行文件。针对PyQt5这类大型GUI

weixin_30319153的博客 331

Nuitka打包PyQt5避坑指南:解决DLL缺失和路径错误的实战经验

本文分享了使用Nuitka打包PyQt5桌面应用时,解决DLL缺失和路径错误的实战经验。针对常见的移植问题,文章详细解析了Nuitka打包机制,提供了稳健的打包命令、系统化的依赖收集流程,并重点指导如何深度排查修复DLL加载失败问题,确保编译后的exe能在纯净环境中稳定运行。

a1b2c的博客 706

PyQt Designer入门指南:可视化GUI开发Python桌面应用实战

图形用户界面(GUI)开发是桌面应用构建的核心环节,其原理在于通过控件库和布局管理器实现用户交互的可视化。在Python生态中,PyQt作为成熟的GUI框架,结合其可视化设计工具PyQt Designer,能显著提升开发效率。PyQt Designer采用拖拽式界面设计,自动生成UI描述文件,开发者可专注于业务逻辑实现,这一技术价值在于降低GUI开发门槛并加速原型迭代。其应用场景广泛,涵盖数据工具、办公自动化及小型桌面软件等。本文以PyQt Designer为切入点,详解环境搭建、控件拖拽、信号槽机制及项目

weixin_30729609的博客 628

LabelImg闪退问题终极解决方案:删除.pkl文件真的有效吗?

本文深度剖析了LabelImg标注工具闪退问题的根源,指出删除.pkl配置文件仅是应急方案,可能丢失个人设置且治标不治本。文章提供了从命令行诊断、环境依赖管理到配置文件健壮处理的完整根治方案,并探讨了闪退的深层原因高质量替代工具,旨在帮助用户从根本上解决稳定问题,提升数据标注效率。

day7的博客 996

LabelImg闪退问题终极解决方案:删除这个隐藏文件就能搞定(附高效标注技巧)

本文深入剖析了LabelImg在Windows系统上频繁闪退的根本原因,指出问题通常源于用户目录下隐藏的`.labelImgSettings.pkl`配置文件损坏或版本不兼容。文章提供了删除该文件以彻底解决闪退问题的详细步骤,并分享了预设标签、快捷键操作等高效标注技巧,帮助用户提升图像标注效率。

yog99的博客 648

Windows下LabelImg零失败安装指南:PyQt5版本控制conda环境隔离

LabelImg作为目标检测数据标注的基础工具,其稳定运行依赖于Python环境、GUI框架(PyQt5)及系统安全策略的协同适配。原理上,它需在特定Python ABI下加载PyQt5 5.15.9等精确版本,并通过conda虚拟环境实现依赖隔离;技术价值在于规避Windows PATH污染、conda/pip混用冲突及Windows Defender静默拦截等典型故障;广泛应用于YOLOv8数据标注、CV教学实训工业级图像标注产线搭建。本指南聚焦‘pip不是内部或外部命令’和‘labelimg打不开目

weixin_34185320的博客 393

Python打包exe报错全解析:从ModuleNotFoundError到闪退的终极解决方案

Python程序打包成可执行文件(exe)是许多开发者将脚本交付给非技术用户的关键步骤,但这一过程常因环境差异导致各种报错。其核心原理在于打包工具(如PyInstaller)需要将Python解释器、脚本代码及所有依赖完整封装,形成一个独立的运行环境。然而,由于Python的动态特、隐式依赖和路径问题,静态分析往往无法捕获全部运行时所需资源,从而引发ModuleNotFoundError、ImportError或程序闪退。从技术价值看,掌握打包问题的排查不仅能提升交付效率,更是深入理解Python模块机制

weixin_34357887的博客 370

Labelimg画框就闪退?别慌,一个命令搞定Python版本冲突(附Anaconda环境管理指南)

本文详细解决了Labelimg在点击'Create RectBox'画矩形框时闪退的问题,指出Python版本冲突是主要原因,并提供了通过Anaconda创建专用Python环境的解决方案。同时,文章还分享了Anaconda环境管理的核心技巧,帮助读者有效避免类似环境冲突问题。

weixin_31714129的博客 324
上一篇: Qt 将QDockwidget添加到widget 显示问题 出现省略号
下一篇: 嵌入式设备使用protobuf进行加密通信
平平无奇的小机灵
博客等级 码龄7年 9粉丝 11原创
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值