多執行緒的簡單應用

2021-07-25 10:56:21 字數 946 閱讀 4459

前一陣兒用python寫了乙個抓取某**的指令碼,打包成了帶有gui的可執行程式,介面沒有怎麼設計只是有兩個按鈕,分別抓取兩類,並將抓取的放到當前目錄的上一資料夾。

gui是用python自帶的庫tkinter,下面是效果圖:

只有當抓取完成後圖形介面才會回到正常狀態。從網上查了一下,發現這是因為將邏輯處理和ui放在了乙個執行緒中,導致ui重新整理遇到了阻塞,解決方法是用多執行緒將邏輯**與gui分開執行。可是從網上查詢python多執行緒的知識只是給了幾個簡單的小例子,那gui中的多執行緒怎麼實現呢?其實也很簡單!我的圖形介面只用到了兩個按鈕,先前我是直接把按鈕繫結到執行邏輯**的函式中,現在我只要繫結到乙個新的函式中,在這個函式中開執行緒就可以了。看部分**:

threads = 

button(root, text="抓取qq", command = qqthread).pack(side=left)

defweixinthread

(): t1 = threading.thread(target=weixin)

t1.setdaemon(1)

t1.start()

defqqthread

(): t2 = threading.thread(target=qq)

t2.setdaemon(1)

t2.start()

按鈕繫結兩個執行緒函式,執行緒函式中再去呼叫邏輯函式,這樣再次執行程式就不會出現ui介面卡死的問題了。

這是我第一次在實際應用中用到了多執行緒,雖然只是解決了乙個很小的問題,但是也算是在多執行緒這方面有一點收穫。

多執行緒的簡單應用

全域性併發佇列 新增touch事件顯示 void touchesbegan nsset touches withevent uievent event dispatch async dispatch get global queue dispatch queue priority default,0...

java多執行緒的簡單應用

最近在做推送相關的模組,在群推時發現新增log效率比較低,特別是批量update操作,所以使用非同步操作log比較好 建乙個類asynpushrecord,寫從初始化方法設定執行緒基礎引數 postconstruct public void init 關於的threadpoolexecutor用法看...

多執行緒的應用

一 程序和執行緒的概念 每乙個程式執行都是乙個程序,都有乙個執行的路徑,在這個程序中又有很多的執行緒,來執行不同的 就想我們在電腦上同時開啟許多個程式一樣,如果是單核cpu處理器的情況,那麼,cpu只會執行乙個程式,而我們視覺上感覺都在執行,那是因為cpu在完成快速的切換 在main函式中,進行著乙...