可以通過實例化一個threading.Thread()對象來創建子線程。
import threading import time def listen_music(num): print("----> %d" % num) print("begin to listen music at ", time.ctime()) time.sleep(5) print("end to listen music at ", time.ctime()) if __name__ == '__main__': t1 = threading.Thread(target=listen_music, args=(13,)) t1.start() print("Two things is end....")
其中通過
t1 = threading.Thread(target=listen_music, args=(13,))
這句代碼,創建了一個子線程。target參數是該線程要執行的函數;args參數需要傳入一個元組,該元組是函數運行需要的實參。
t1.start() 啟動線程;但實際上start()方法只是讓線程處於就緒狀態,即可以被計算機的CPU切換到該線程並執行。
運行結果如下:
----> 13 listening is end.... # 主線程執行的語句 begin to listen music at Tue Mar 19 22:03:36 2019 # 子線程開始的語句 end to listen music at Tue Mar 19 22:03:41 2019 # 子線程結束的語句
其中可以看到,主線程主要執行了主函數中的最后一句打印;子線程與主線程同時開始,但time.sleep(10)讓子線程休眠了10秒,在主線程結束后10秒,子線程才會結束。