day10 主線程等待子執行緒的兩種方式

2022-06-08 12:39:12 字數 3235 閱讀 9097

import threading,time

def axb(name):

time.sleep(1)

print('哈哈',name)

for i in range(10):

t = threading.thread(target = axb,args = (i,)) # 例項化乙個執行緒,啟動乙個執行緒,10個子執行緒一起執行axb函式,先暫停1秒

t.start()

print('game over')

# 有1個主線程,10個子執行緒,先執行主線程,主線程建立完10個子執行緒,不暫停直接輸出,子執行緒要暫停1秒再執行axb裡面的**才輸出

如果在for迴圈裡寫t.join(),只等待最後乙個執行緒,執行緒和執行緒之間是相互獨立的

import threading

import time

def down_load():

time.sleep(5)

print('執行完了')

def movie():

time.sleep(1)

print('看電影')

start_time = time.time()

for i in range(10):

t = threading.thread(target=down_load)

t.start()

for j in range(5):

t = threading.thread(target=movie)

t.start()

print(threading.activecount()) # 檢視當前執行緒數,列印出16(1個主線程,15個子執行緒)

print(threading.current_thread()) # 檢視當前執行緒,列印出<_mainthread(mainthread, started 35028)>

end_time = time.time()

# 執行時先列印end_time - start_time,然後執行5次看電影,再執行10次執行完了

print(end_time - start_time)

主線程等待的兩種方式(第一種,比較麻煩):

import threading

import time

def movie():

time.sleep(1)

print('看電影')

thread_list =

start_time = time.time()

for j in range(5):

t = threading.thread(target=movie)

t.start()

for thread in thread_list:

thread.join() # 主線程等待子執行緒

print(threading.activecount()) # 檢視當前執行緒數,列印出1,主線程等待五個子執行緒都執行完了

print(threading.current_thread()) # 檢視當前執行緒,列印出<_mainthread(mainthread, started 29960)>

end_time = time.time()

# 執行時先執行5次看電影,然後主線程往下走,**一次執行

print(end_time - start_time)

主線程等待的兩種方式(第二種,根據當前執行緒數判斷,如果當前執行緒數等於1,證明子執行緒都執行完了,不用定義list,也不用迴圈list,定義乙個死迴圈,什麼都不做):

import threading

import time

def movie():

time.sleep(1)

print('看電影')

start_time = time.time()

for j in range(5):

t = threading.thread(target=movie)

t.start()

while threading.activecount() != 1: # !=1讓它繼續迴圈,直到子執行緒結束執行

pass

print(threading.activecount()) # 檢視當前執行緒數,列印出1,主線程等待五個子執行緒都執行完了

print(threading.current_thread()) # 檢視當前執行緒,列印出<_mainthread(mainthread, started 29960)>

end_time = time.time()

# 執行時先執行5次看電影,然後主線程往下走,**一次執行

print(end_time - start_time)

C 主線程等待子執行緒執行結束

佐左佑右 原文 c 主線程等待子執行緒執行結束 由於主程式中呼叫matlab的dll檔案進行計算要用較長的時間,主介面會有很長時間的卡頓,造成的使用者感受十分不好,因此我想在呼叫時,將呼叫放入子執行緒中,然後在主線程中彈出乙個提示框,顯示資料正在載入,等子執行緒執行結束後,主線程繼續工作。使用的是中...

模擬主線程等待子執行緒的過程

今天看到一篇文章 講到主線程等待子執行緒執行完畢,如何判斷的問題.作者一開始採用的是簡單的sleep操作,但這種操作不能夠保證正確而且效率還比較低.於是作者自己設計了判斷子執行緒結束的方法,我也就實踐了這個方法.其實windows中提供的有系統函式來滿足需求,它就是waitformultipleob...

java執行緒池主線程等待子執行緒執行完成

今天討論乙個入門級的話題,不然沒東西更新對不起空間和網域名稱 工作總往往會遇到非同步去執行某段邏輯,然後先處理其他事情,處理完後再把那段邏輯的處理結果進行彙總的產景,這時候就需要使用執行緒了.乙個執行緒啟動之後,是非同步的去執行需要執行的內容的,不會影響主線程的流程,往往需要讓主線程指定後,等待子執...