日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python退出mainloop_不要阻塞tkinter的mainloop

發(fā)布時(shí)間:2025/3/15 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python退出mainloop_不要阻塞tkinter的mainloop 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近被GUI多線程代碼的死鎖問(wèn)題搞的有點(diǎn)頭大,本文總結(jié)一下自己的所思所得,并不代表完全正確,因?yàn)楫吘箾](méi)有去閱讀tk的源代碼。

mainloop,故名思議,它就應(yīng)該是python程序的mainThread。這個(gè)GUI的mainloop,靠事件響應(yīng)驅(qū)動(dòng)。比如有一個(gè)button(A),點(diǎn)A,就是給這個(gè)mainloop傳遞了一個(gè)事件,這個(gè)事件最后會(huì)傳遞到A綁定的commnad函數(shù)中去執(zhí)行。

不要阻塞tkinter的mainloop,就是不要在事件響應(yīng)的函數(shù)中阻塞住,否則GUI會(huì)卡死。常見(jiàn)的現(xiàn)象是,A綁定的函數(shù)執(zhí)行需要那么一點(diǎn)點(diǎn)時(shí)間,點(diǎn)擊下去后,GUI就會(huì)卡住那么一點(diǎn)點(diǎn)時(shí)間。所以,大多數(shù)編程教材都建議使用多線程來(lái)規(guī)避GUI的卡死,即點(diǎn)擊A后啟動(dòng)一個(gè)線程,A綁定的函數(shù)立即返回,釋放GUI(表示GUI有可能接收別的事件的響應(yīng)了),具體工作由線程完成。

由線程來(lái)完成工作,并規(guī)避GUI的卡死,是個(gè)很好的最佳實(shí)踐,不過(guò),我遇到的問(wèn)題是,線程被GUI卡死了!

計(jì)算模型大概是這樣的:多個(gè)線程通過(guò)操作一個(gè)Text控件就是往里寫log;寫log的執(zhí)行流程代碼中,有mutex,用來(lái)多線程間控制Text的狀態(tài);GUI的事件響應(yīng)中,也有mutex.acquire;只要GUI出發(fā)這個(gè)事件,整個(gè)程序就死鎖了。

為什么會(huì)這樣呢?我想來(lái)想去,覺(jué)得出問(wèn)題的地方,就是線程被GUI卡死了。為什么線程會(huì)被卡死呢?因?yàn)榫€程在mutex.acquire中在向GUI發(fā)事件(操作Text),而此時(shí)GUI在等待mutex,于是死鎖。

GUI在一個(gè)事件沒(méi)有處理完的情況下,是無(wú)法處理別的事件的。比如我們?cè)贏的綁定函數(shù)中sleep,整個(gè)GUI上其它地方都點(diǎn)不了(OS會(huì)記錄這些事件,在GUI被釋放后再把這些事件灌給它)。線程中對(duì)Text的操作無(wú)法返回,很可能就是因?yàn)镚UI已經(jīng)被卡死了。

奇怪的是,如果A綁定代碼中也操作Text,不會(huì)卡死,而只是在GUI被釋放后,一口氣把所有的log全顯示出來(lái),log顯示的過(guò)程只是感覺(jué)不流暢而已。區(qū)別在于mainloop中觸發(fā)事件和非mainloop中觸發(fā)(我個(gè)人的理解哈),也許存在內(nèi)部事件和外部事件這樣的區(qū)別,外部事件會(huì)被阻塞,即線程操作Text的代碼被阻塞,而mainloop中操作Text的代碼,只是更新延后。

總之,在GUI中如果有mutex.acquire這樣的代碼,是非常危險(xiǎn)的,一不留神就死鎖。不要阻塞mainloop的事件響應(yīng),用線程是OK的,用戶友好。多線程之間有mutex沒(méi)問(wèn)題,只要GUI的mainloop沒(méi)有被卡死。

-- EOF --

總結(jié)

以上是生活随笔為你收集整理的python退出mainloop_不要阻塞tkinter的mainloop的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美老熟妇一区二区三区 | 亚洲欧洲中文字幕 | 国产码视频 | 岛国裸体写真hd在线 | 在线免费观看 | 一二区免费视频 | 琪琪色影音先锋 | 国产一区二区久久 | 国产欧美日韩综合精品 | 超碰caopeng | 免费久久av| 日本成片网 | 六月丁香婷婷激情 | 色天天av | 91精品免费观看 | 中国免费黄色片 | 自拍偷拍第5页 | 综合久久国产 | 精品久久久久亚洲 | 欧美一级二级片 | 毛片成人网 | 国产精品香蕉国产 | 三级视频在线看 | 99精品毛片 | 黄毛片在线观看 | 视频一区二区在线播放 | 97福利社 | 福利小视频在线播放 | www.日韩在线观看 | 97久草 | 51热门大瓜今日大瓜 | 91亚洲影院 | 国产精品久久久久久久午夜 | 欧美精品亚洲精品 | 一区二区三区四区日韩 | 成人精品在线 | 日本韩国欧美中文字幕 | 强开乳罩摸双乳吃奶羞羞www | 国内精品视频在线 | 天天操天天干天天摸 | 日本在线 | 无码人妻精品一区二区三应用大全 | 日韩三级在线播放 | 国产日韩欧美一区二区 | 97成人资源站 | 欧美jizzhd精品欧美18 | 国产男女无套免费网站 | 校园春色 亚洲色图 | 国模精品一区二区三区 | 日本免费a视频 | 香蕉伊思人视频 | 视屏一区 | 97夜夜| 黄色aaaaa| 国产精品扒开腿做爽爽 | 日韩三级欧美 | 国产亚洲精品码 | 国产又黄又粗又猛又爽 | 精品动漫3d一区二区三区免费版 | 美女无遮挡免费网站 | 天堂va蜜桃一区 | 一级爱爱免费视频 | 精品日本一区二区三区在线观看 | 日本一区不卡在线观看 | 超碰人人网 | 91天堂在线视频 | 97久久人人 | 欧美日韩久久久久久 | 国产成人一区在线观看 | 69堂免费视频 | 成人免费毛片嘿嘿连载视频 | 强制高潮抽搐哭叫求饶h | 色综合av在线 | 亚洲免费一区视频 | 超碰在线色 | 色肉色伦交av色肉色伦 | 四季av一区二区三区免费观看 | 亚洲va国产va天堂va久久 | 第一章婶婶的性事 | 日本久热| 精品精品视频 | 69国产成人精品二区 | 欧美黑人多人双交 | 女人性高潮视频 | 亚洲国产成人av | 日韩亚洲欧美一区二区 | 国产3区| 乳孔很大能进去的av番号 | 性色国产成人久久久精品 | 色四月婷婷| www.日本黄色 | 精品国产黄色 | 亚洲午夜激情 | 欧美一区二区三区久久久 | 亚洲在线中文字幕 | 欧美成人精品在线视频 | 91在线公开视频 | 欧美色图在线视频 | 黄网站色视频 |