2016 - 2024

感恩一路有你

pyqt5 qthread终止线程 如何使用python3.5.2 pyqt5编写无阻塞多线程GUI?

浏览量:1309 时间:2021-03-16 19:31:39 作者:admin

如何使用python3.5.2 pyqt5编写无阻塞多线程GUI?

没有人回答这么长的问题,因为我没有用py,没有好的答案。我通常用C和QT。如果项目很简单,我就把它放在主循环中。如果它很复杂,我通常使用boost库打开另一个线程以在另一个循环中接收消息。我不知道怎么写py,但应该是一样的。我想知道为什么它被封锁了?我想代码有问题

谢谢你的邀请

!在回答之前,让我们先看看线程的几种状态以及状态切换的过程,如下图所示(我不想画,在线盗窃):

线程退出必须是初始化后的任何状态(不包括终止状态)退出。

线程在启动后独立运行。正常情况下,他们不能在启动后进行干预。他们只能等待跑步的结束。如果他们想干预,他们只能在共享内存区域中添加一个状态标识符。实际上,JDK已经有了一个内置的状态标识符,即中断标识符。它调用中断方法,但是处于等待状态的线程将抛出中断异常,并且它可以优化add状态变量。

总结起来,有三种方法:

1。等待线程完成自己的执行(这是最优雅的,但没有讨论的意义)。

2. 调用中断方法判断中断标识。但是,在等待状态下,会抛出异常,不能认为是优雅的。示例代码如下:

3。自己添加中断状态标志。示例代码如下:

摘要:

等待状态:在此状态下,exit只能调用中断方法。

阻塞状态:有两种类型:一种是可中断的,调用中断方法退出;另一种是不可中断的,只有运行后才能退出。

就绪状态:等待CPU调度,无干预。

运行状态:添加您自己的共享状态标识符。

最后的“优雅退出”代码如下:

pyqt5 qthread终止线程 python线程启动和暂停 pyqt5线程跨类调用ui对象

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。