python pyqt5在使用多线程时自动退出是怎么回事?
我有一个程序需要创建了两个线程,一个是启动之后就循环运行,一个是在点击按钮之后进行运行,现在自动运行的部分在循环一次之后就直接推出,也不报错,求大神帮忙啊。这个循环本身单...
我有一个程序需要创建了两个线程,一个是启动之后就循环运行,一个是在点击按钮之后进行运行,现在自动运行的部分在循环一次之后就直接推出,也不报错,求大神帮忙啊。这个循环本身单独运行没有问题,放到新创建的线程里就出问题
展开
1个回答
展开全部
线程只执行一次……让我来猜一猜。
你可能会认为创建一个线程去执行某个动作就完事了?
一段代码不管是在主线程里还是在新建的线程里,它都是按代码本身的规则那么执行的,该循环就循环,该结束就结束。
所以,我们建立一个线程去执行某个动作,主要就是让这个动作的执行不影响主程的执行,不要因为它导致主程序的某环节等待这个动作的结果。
举例来说,一个定时3秒去读一下某个文件,总不能做个循环,读一下文件,然后sleep3秒吧,那除了这个,什么也干不了,基本都是在【等待3秒】这里耗着了。解决办法就是做个线程去完成【读某个文件】,然后这个事完了之后、前再建一个同样的线程让它三秒后执行。
看下图:
这个sort_loop就是这样干的:
【红框2】就是主要的工作内容(对self.data进行收缩)
如果简简单单的就这,那它就执行一次就完事了,哪怕你把sort_loop放到新线程里,也是一样。
要在sort_loop里再新建一个线程,新线程还是执行sort_loop,于是就是这样的:
A把桌子擦了擦,把抹布塞给了B;
B把桌子擦了擦,把抹布塞给了C;
C把桌子擦了擦,把抹布塞给了D...
这才构成一个线程循环。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询