新聞中心
1、線程的join()方法表示等這個(gè)線程運(yùn)行完畢,程序再往下運(yùn)行。我們來看下面的例子

創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)整合營銷推廣、網(wǎng)站重做改版、阜平網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、購物商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為阜平等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
from threading import Thread t = time.time() for _ in range(5): th = Thread(target = myfun) th.start() th.join()print(time.time() - t) # 結(jié)果為 5.0047078132629395 秒
2、這里start()之后馬上join(),表示每一個(gè)線程都要運(yùn)行結(jié)束才能進(jìn)行下一次循環(huán),這樣就和沒有使用多線程沒有區(qū)別了。不過如果要計(jì)算多線程運(yùn)行時(shí)間卻是要用到這個(gè)join()
我們先看一下不用join()的情況
from threading import Thread t = time.time() for _ in range(5): th = Thread(target = myfun) th.start()print(time.time() - t) # 結(jié)果為 0.0009980201721191406 秒
3、它連1秒都沒有等,就輸出了結(jié)果,而且5個(gè)2是在打印出這個(gè)之后才輸出出來的。這是因?yàn)閜rint(time.time() - t)是區(qū)別于那5次循環(huán)線程之外的第6個(gè)線程,它不會(huì)等待5個(gè)線程運(yùn)行結(jié)束就會(huì)開始運(yùn)行。所以這樣是無法獲得上面5個(gè)線程的運(yùn)行時(shí)間的,我們需要用join()等待5個(gè)線程都運(yùn)行結(jié)束。
代碼如下
from threading import Thread t = time.time()ths = [] for _ in range(5): th = Thread(target = myfun) th.start() ths.append(th)for th in ths: th.join()print(time.time() - t # 結(jié)果為 1.0038363933563232
join()不只是用于這種情形。當(dāng)一步代碼運(yùn)行依賴之前代碼運(yùn)行完成時(shí),就要加入join()命令。
以上就是python多線程中join的應(yīng)用場景,希望能對大家有所幫助。更多Python學(xué)習(xí)指路:創(chuàng)新互聯(lián)python教程
本文教程操作環(huán)境:windows7系統(tǒng)、Python 3.9.1,DELL G3電腦。
網(wǎng)頁名稱:創(chuàng)新互聯(lián)Python教程:python多線程中join的應(yīng)用場景
URL分享:http://www.5511xx.com/article/djedjgg.html


咨詢
建站咨詢
