寫法一
import time from threading import Thread def func(name): print(f"{name}開始") time.sleep(0.5) print(f"{name}結束") if __name__ == '__main__': t1 = Thread(target=func, args=("線程1",)) t2 = Thread(target=func, args=("線程2",)) t1.start() t2.start() print("主線程結束")
執行結果:
線程1開始
線程2開始
主線程結束
線程1結束
線程2結束
寫法二
import time from threading import Thread class MyThread(Thread): def __init__(self, name): # 可以通過初始化來傳遞參數 super(MyThread, self).__init__() self.name = name def run(self): # 必須有的函數 print(f"{self.name}開始") time.sleep(0.2) print(f"{self.name}結束") if __name__ == '__main__': t1 = MyThread("線程1") # 創建第一個線程,並傳遞參數 t2 = MyThread("線程2") # 創建第二個線程,並傳遞參數 t1.start() # 開啟第一個線程 t2.start() # 開啟第二個線程 print("主線程執行結束,子線程是依附於主線程存在的,所以,子線程都結束后,主線程才真正的結束。")
執行結果:
線程1開始
線程2開始
主線程執行結束,子線程是依附於主線程存在的,所以,子線程都結束后,主線程才真正的結束。
線程1結束
線程2結束
兩種寫法效果是一樣的。