python pyqt5在使用多线程时自动退出是怎么回事?

python pyqt5在使用多线程时自动退出是怎么回事?,第1张

线程只执行一次……让我来猜一猜。

你可能会认为创建一个线程去执行某个动作就完事了?

一段代码不管是在主线程里还是在新建的线程里,它都是按代码本身的规则那么执行的,该循环就循环,该结束就结束。

所以,我们建立一个线程去执行某个动作,主要就是让这个动作的执行不影响主程的执行,不要因为它导致主程序的某环清芹节等待这个动作的结果。

举例来说,一个定时3秒去读一下某个文件,总不能做个循环,读一下文件,然后sleep3秒吧,那除了这个,什么也干不了,基本都是在【等待3秒】这里耗着了。解决办法就是做个线程去完成【读某个文件】,然后这个事完了之后、前再建一个同样的线程让它三秒后执行。

看下图:

这个sort_loop就是这样干的:

【红框2】就是答则毕主要的工作内容(对self.data进行收缩)

如果简简单单的就这,那它就执行一次就完事了,哪怕你把sort_loop放到新线程里,也是一样。

要在sort_loop里再新建一个线程,新线程还是执行sort_loop,于是就是这样的:

A把桌子擦了擦,把抹布塞给了B;

B把桌子擦了擦,把抹布塞给了C

C把盯唯桌子擦了擦,把抹布塞给了D...

这才构成一个线程循环。

可能是中文文件损坏,可以重闭让新下载。也有可能是没有把QMainWindow放到主进程的self中。如果不加self,则没有app=QApplication(sys.argv)支持,无法循环窗喊态颤口。看到的闪退实则是开启一次窗口后退出郑败。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12356296.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存