最近使用了QThread发现了一些有趣的东西。记录一下

一个简单的例子

class test1(QThread):def __init__(self):super().__init__()self.threadId = 0def run(self):self.threadId = self.currentThreadId()print("ttt2:", threading.currentThread())def stop(self):self.terminate()self.wait()if __name__ == "__main__":app = QApplication(sys.argv)t1= test1()t1.start()time.sleep(1)print(threading.enumerate())t1.stop()time.sleep(1)print(threading.enumerate())for th in threading.enumerate():print(th.isDaemon(), th.name, th.isAlive(),id(th), th.ident)print(threading.enumerate())sys.exit(app.exec_())

他对应的打印

当时很奇怪我明明把 t1线程terminate了,但后续在threading.enumerate中还是打印出了该线程,该线程的isAlive状态仍然为True。虽然这不影响我的程序,但还是让我很难受。

于是我进入enumerate源码中查看,发现这个枚举返回的线程包括 daemonic线程,dummy线程,以及主线程,并排除了已经终止和还未开始的线程。

发现其实QThread创建的是dummy线程。于是我找向DummyThread类。发现有这么个解释。

大概意思就是 他会被标记为守护线程,一旦被调用,那他们会在_active字典中永远得留下这个条目。而enumerate中返回的结果就有一部分是_active中的线程。所以即使你调用了QThread.terminate()方法,他也不会从字典中排除。另外,这里面有一句说是当这些线程die了,也不会被gc掉。。。

Pyqt QThread相关推荐

  1. PYQT中QThread输出到textBrowser

    问题概述 在PYQT中,有时我们会需要将log信息等实时打印到ui控件上,但是由于PYQT的进程保护机制,我们无法像使用print函数中那样,直接使用就能打印出来信息.所以通常都会发现,PYQT中的U ...

  2. Python Qt GUI设计:QTimer计时器类、QThread多线程类和事件处理类(基础篇—8)

    目录 1.QTimer计时器类 2.QThread多线程类 3.事件处理类 一般情况下,应用程序都是单线程运行的,但是对于GUI程序来说,单线程有时候满足不了需求.例如,如果需要执行一个特别耗时的操作 ...

  3. 服务器可以pyqt显示吗,用pyqt+socket实现远程操作服务器的一个例子,PyQtsocket,方法,示例...

    @本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 这篇文章主要介绍了PyQt+socket实现远程操作服务器的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定 ...

  4. pyqt 事件更新图片显示_使用PyQTamp;树莓派制作一个天气站

    吃灰的很久树莓派 b 偶然翻出来 发挥下余热,系统采用官方固件 Raspberry Pi OS(Raspbian) ,由于我的屏幕时由HDMI 驱动所以无需特殊配置其他驱动(我这装了下卖家给的驱动调整 ...

  5. python制作视频播放器_Python应用03 使用PyQT制作视频播放器

    最近研究了Python的两个GUI包,Tkinter和PyQT.这两个GUI包的底层分别是Tcl/Tk和QT.相比之下,我觉得PyQT使用起来更加方便,功能也相对丰富.这一篇用PyQT实现一个视频播放 ...

  6. python开发视频播放器_Python应用03 使用PyQT制作视频播放器实例

    最近研究了Python的两个GUI包,Tkinter和PyQT.这两个GUI包的底层分别是Tcl/Tk和QT.相比之下,我觉得PyQT使用起来更加方便,功能也相对丰富.这一篇用PyQT实现一个视频播放 ...

  7. python暂停和恢复_python – 暂停和恢复QThread

    我正在尝试暂停QThread并恢复它. 所以,我在QThread中有一个RFID读取循环,我想在阅读器获得RFID代码时暂停无限循环.之后,有一个数据库检查.在检查结束时,我想恢复RFID阅读循环以获 ...

  8. Python使用PyQT制作视频播放器

    最近研究了Python的两个GUI包,Tkinter和PyQT.这两个GUI包的底层分别是Tcl/Tk和QT.相比之下,我觉得PyQT使用起来更加方便,功能也相对丰富.这一篇用PyQT实现一个视频播放 ...

  9. Python应用03 使用PyQT制作视频播放器

    最近研究了Python的两个GUI包,Tkinter和PyQT.这两个GUI包的底层分别是Tcl/Tk和QT.相比之下,我觉得PyQT使用起来更加方便,功能也相对丰富.这一篇用PyQT实现一个视频播放 ...

  10. Qt——线程类QThread

    本文主要介绍Qt中线程类QThread的用法,参考(翻译+修改)了一篇文章:PyQt: Threading Basics Tutorial,虽然使用的是PyQt,但与C++中Qt的用法大同小异,不必太 ...

最新文章

  1. 好书征集第2弹 | 你pick哪本人工智能好书
  2. escape()、encodeURI()、encodeURIComponent()区别详解
  3. 运用SQLAlchemy
  4. spring @lazy_Spring @Lazy批注用例
  5. Atom 编辑器系列视频课程
  6. C++ 常见错误(01) —— error LNK1104: 无法打开文件“avcodec.lib”
  7. Android开发BroadcastReceiver广播的使用
  8. 【转】8G内存下MySQL的优化详细方案
  9. c语言 关键字符,c语言关键字有哪些 c语言关键字解释
  10. 如何免费搭建FTP服务器---金万维
  11. 螃蟹在剥我的壳,笔记本在写我。 漫天的我落在枫叶上雪花上。 而你在想我。
  12. Unity 场景练习02 仿风之旅人
  13. 智能家居创意产品一智能插座
  14. 关于轩辕剑3外传 swd3eDvd.exe报错问题
  15. 如何将mp4视频压缩到最小?
  16. 数据库应用----Mongodb 4.0 版本 基础操作---复制集,选举方法、部署认证 (二)
  17. 钉钉企业内部应用开发php,钉钉企业内部应用开发心得
  18. Matlab通信仿真常用函数
  19. 网络信息手机:web scrapper数据获取 、数据采集器、公众号信息收集
  20. cplex小白感悟—前言

热门文章

  1. android表格布局占满整行,Android布局之表格布局TableLayout详解
  2. C# 基础(二十五)WPF/WinForm 控件的句柄是什么意思?
  3. 网页中的位图与矢量图使用
  4. ASIC与FPGA的最大区别是什么 可否相互替代
  5. win10电脑打开计算机快捷键,运行快捷键,教您win10打开运行快捷键是什么
  6. win10系统 DNS服务器,dns出错?Win10系统dns服务器未响应的修复方法
  7. 关于华为9.0系统 应用图标消失处理
  8. win11开热点连接之后无网络解决方案
  9. 自己做量化交易软件(45)小白量化实战18--直接使用通达信自编指标公式进行分析绘图和回测
  10. 线性和EWMA指数加权移动平均模型