標籤:線程 count() author star pre font run post 結果
線程間的關係
# -*- coding:utf-8 -*-__author__ = "MuT6 Sch01aR"import threadingimport timedef MyThread(n): print("Running Thread",n) print(threading.current_thread()) #列印當前線程的類型 time.sleep(2)for i in range(20): t = threading.Thread(target=MyThread,args=(i,)) t.start()print("Running Main Threading",threading.current_thread())print(threading.active_count()) #計算線程數
運行結果
主線程和子線程同時執行,然後指令碼執行Mythread函數裡的time.sleep(2),運行停頓大概2秒
線程數為當前主線程和子線程數之和
def MyThread(n): print("Running Thread",n) print(threading.current_thread()) time.sleep(2)for i in range(20): t = threading.Thread(target=MyThread,args=(i,)) t.start()
這段代碼為主線程啟動的子線程
print("Running Main Threading",threading.current_thread())print(threading.active_count())
這段代碼為主線程執行的線程
多線程的等待
# -*- coding:utf-8 -*-__author__ = "MuT6 Sch01aR"import threadingimport timeAll_Thread = []def MyThread(n): print("Running",n,"Thread") time.sleep(2)for i in range(20): t = threading.Thread(target=MyThread,args=(i,)) t.start()print("Finished All Sub-thread")
運行,查看結果
該指令碼同時執行主線程和子線程
如果想先執行完子線程再執行主線程,可以使用wait()
# -*- coding:utf-8 -*-__author__ = "MuT6 Sch01aR"import threadingimport timeAll_Thread = []def MyThread(n): print("Running",n,"Thread") time.sleep(2)for i in range(20): t = threading.Thread(target=MyThread,args=(i,)) t.start() All_Thread.append(t)for t in All_Thread: t.join()print("Finished All Sub-thread")
運行,查看結果
先執行了子線程,然後停留了大概2秒,再執行了主線程
Python的多線程