python多線程中join的應用場景
1、線程的join()方法表示等這個線程運行完畢,程序再往下運行。我們來看下面的例子
fromthreadingimportThread
t=time.time()
for_inrange(5):
th=Thread(target=myfun)
th.start()
th.join()print(time.time()-t)
#結(jié)果為5.0047078132629395秒
2、這里start()之后馬上join(),表示每一個線程都要運行結(jié)束才能進行下一次循環(huán),這樣就和沒有使用多線程沒有區(qū)別了。不過如果要計算多線程運行時間卻是要用到這個join()
我們先看一下不用join()的情況
fromthreadingimportThread
t=time.time()
for_inrange(5):
th=Thread(target=myfun)
th.start()print(time.time()-t)
#結(jié)果為0.0009980201721191406秒
3、它連1秒都沒有等,就輸出了結(jié)果,而且5個2是在打印出這個之后才輸出出來的。這是因為print(time.time()-t)是區(qū)別于那5次循環(huán)線程之外的第6個線程,它不會等待5個線程運行結(jié)束就會開始運行。所以這樣是無法獲得上面5個線程的運行時間的,我們需要用join()等待5個線程都運行結(jié)束。
代碼如下
fromthreadingimportThread
t=time.time()ths=[]
for_inrange(5):
th=Thread(target=myfun)
th.start()
ths.append(th)forthinths:
th.join()print(time.time()-t
#結(jié)果為1.0038363933563232
join()不只是用于這種情形。當一步代碼運行依賴之前代碼運行完成時,就要加入join()命令。
以上就是python多線程中join的應用場景,希望能對大家有所幫助。更多Python學習教程請關(guān)注IT培訓機構(gòu):千鋒教育。