2行python程式碼打造多執行緒工具,這是史上最強的黑科技?
Python黑科技
兩行程式碼實現多執行緒操作
學習Python中有不明白推薦加入交流群
號:960410445
群裡有志同道合的小夥伴,互幫互助,
群裡有不錯的視訊學習教程和PDF!
什麼是執行緒?
執行緒(thread)存在於程序(process)中,每個執行緒都是程序中的一個例項(instance)。換而言之,執行緒是每個程式執行的基本單位,是程序的一部分。
什麼,程序是啥?程序就是程式的例項。比方說,在windows平臺下,如果我們開啟工作管理員,就會發現其第一個標籤為Processes,然後底下就是各個程式的程序:
所以多執行緒可以幹什麼?
舉個栗子。我們先用以下程式碼建立一個帶有按鈕的tk視窗:
假設我們想實現一個功能:在按下按鈕時用記事本開啟一個文字檔案。
OK,很簡單,在_click()里加行程式碼,大功告成:
現在按一下按鈕:
很完美,好像沒什麼毛病。但是如果我們想再點那個按鈕,甚至拖動視窗的時候,卻發現整個視窗變成了未響應狀態:
這是因為我們在程式中打開了另一個程序,而程式在等待我們關閉(使用完)這個程序。因此,當我們把記事本關掉之後,一切恢復正常。這個問題該怎麼解決呢?
threading module
我們可以建立一個執行緒。當我們開啟這個執行緒的時候讓它去執行_click()這個命令,從而使其與我們tkinter的主程式互不影響。
在Python中想達到這個目的很簡單。首先我們要import這個叫threading的module:
import threading
然後嘛,就跟所有面向物件的寫法一樣,我們可以例項化一個threading.Thread物件:
t= threading.Thread(...)
括號裡應該填什麼呢?我們需要告訴這個執行緒它要去做的事情。所以我們給它的target引數提供一個function object,也就是_click.
t= threading.Thread(target= _click)
第二步,也是最後一步: 開啟這個執行緒。
t.start()
大功告成。現在我們按下按鈕後,即使不關閉記事本也可以任意拖動原來的視窗了。
以下為完整程式碼:
結尾
關於thread的詳細解釋:https://en.wikipedia.org/wiki/Thread_(computing) Python threading官方文件: https://docs.python.org/3/library/threading.html