1. 程式人生 > 程式設計 >Python多執行緒:主執行緒等待所有子執行緒結束程式碼

Python多執行緒:主執行緒等待所有子執行緒結束程式碼

我就廢話不多說了,還是直接看程式碼吧!

from time import ctime
import threading
import time

def a():
  #for i in range(5):
    print('Program a is running... at ',ctime(),u'.執行緒名為:',threading.current_thread().name )
    time.sleep(0.2)
   
def b(x):
  #for i in range(5):
    print('Program b('+x+') is running... at ',threading.current_thread().name )
    time.sleep(0.1)
   

if __name__ == '__main__':
  print('Mainthread %s is running...' % threading.current_thread().name)
  thread_list = []
  for i in range(400):#同時執行多個
   t1= threading.Thread(target=a)
   thread_list.append(t1)
   
  t2 = threading.Thread(target=b,args=('Python',))
  thread_list.append(t2)
  t3 = threading.Thread(target=b,args=('Java',))
  thread_list.append(t3)
 

  for t in thread_list:
    t.setDaemon(True) # 設定為守護執行緒,不會因主執行緒結束而中斷
    t.start()
  for t in thread_list:
    t.join() # 子執行緒全部加入,主執行緒等所有子執行緒執行完畢

  print('Mainthread %s ended.' % threading.current_thread().name)

補充知識:Python主執行緒結束為什麼守護執行緒還在執行?

在實際的互動模式中,主執行緒只有在Python退出時才終止,所以action函式輸出結果還是被打印出來了。”

按照我的理解應該是說,在shell裡主執行緒在輸出結果之後並沒有真的結束,所以action還會列印結果。

建議把程式編譯出來,放到另外的環境中測試,估計就會是你要的結果了。

以上這篇Python多執行緒:主執行緒等待所有子執行緒結束程式碼就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。