python线程卡死问题解决_python while True造成未响应或卡顿的解决方法
經過一段時間的摸索和實驗,本人發現,可以采用update的方法來避免卡頓,代碼如下:
主線程:
前面要開啟一個主窗口root_window,然后進入到調用子線程
que = Queue.Queue()#消息隊列
th1=threading.Thread(target=th_work)#設定子線程
th1.setDaemon(True)#守護線程
th1.start()#開啟子線程
while True: #循環等待子線程返回數據
if not que.empty():
mes = que.get()
if mes == u'end_tag': #接收到結束碼,就結束
break
textmessage.insert(END,mes)
textmessage.see(END)
textmessage.update()
else:
root_window.update()#這里的root_window是主程序的窗口。
這段代碼的意思是:等待子線程返回的信息,并在主窗口的textmessage(是一個scrolledtext控件)顯示處理結果,在子線程處理耗時,一時沒有返回信息(que為空)的時候主線程一邊等待,一邊采用root_window.update()刷新主窗口,在收到結束碼u'end_tag'時,表示子線程工作完成,結束程序。
這樣處理后,程序完全不卡頓,不會出現未響應的狀況,也可以自由的移動主窗口,最大化最小化主窗口也不會卡頓。親測有效。
總結
以上是生活随笔為你收集整理的python线程卡死问题解决_python while True造成未响应或卡顿的解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python的random函数_关于ra
- 下一篇: html实时时间代码_价值十万代码之三-