溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python的線程join如何使用

發(fā)布時(shí)間:2020-09-23 17:21:40 來源:億速云 閱讀:159 作者:小新 欄目:編程語言

python的線程join如何使用?這個(gè)問題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過這個(gè)問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!

 join的作用就凸顯出來了,join所完成的工作就是線程同步,即主線程任務(wù)結(jié)束之后,進(jìn)入阻塞狀態(tài),一直等待其他的子線程執(zhí)行結(jié)束之后,主線程在終止。

join有一個(gè)timeout參數(shù):

當(dāng)設(shè)置守護(hù)線程時(shí),含義是主線程對(duì)于子線程等待timeout的時(shí)間將會(huì)殺死該子線程,最后退出程序。所以說,如果有10個(gè)子線程,全部的等待時(shí)間就是每個(gè)timeout的累加和。簡(jiǎn)單的來說,就是給每個(gè)子線程一個(gè)timeout的時(shí)間,讓他去執(zhí)行,時(shí)間一到,不管任務(wù)有沒有完成,直接殺死。

沒有設(shè)置守護(hù)線程時(shí),主線程將會(huì)等待timeout的累加和這樣的一段時(shí)間,時(shí)間一到,主線程結(jié)束,但是并沒有殺死子線程,子線程依然可以繼續(xù)執(zhí)行,直到子線程全部結(jié)束,程序退出。

join的作用

import threading
import time

def run():

    time.sleep(2)
    print('當(dāng)前線程的名字是: ', threading.current_thread().name)
    time.sleep(2)


if __name__ == '__main__':

    start_time = time.time()

    print('這是主線程:', threading.current_thread().name)
    thread_list = []
    for i in range(5):
        t = threading.Thread(target=run)
        thread_list.append(t)

    for t in thread_list:
        t.setDaemon(True)
        t.start()

    for t in thread_list:
        t.join()

    print('主線程結(jié)束了!' , threading.current_thread().name)
    print('一共用時(shí):', time.time()-start_time)

感謝各位的閱讀!看完上述內(nèi)容,你們對(duì)python的線程join如何使用大概了解了嗎?希望文章內(nèi)容對(duì)大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI