两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

線程管理主要包括線程創(chuàng)建、啟動(dòng)、休眠、等待線程結(jié)束和線程停止,線程創(chuàng)建即為我們上一節(jié)學(xué)習(xí)的內(nèi)容,線程啟動(dòng)的方式為thread.start(),線程休眠的方式為time.sleep(),注意要引入time模塊才可以使用線程休眠功能,這一節(jié)我們就來(lái)學(xué)習(xí)一下等待線程結(jié)束和線程停止。

1. 等待線程結(jié)束

所謂等待線程結(jié)束,就是保證主線程在子線程結(jié)束之后結(jié)束,使用的依然是join()方法,我們需要在join中設(shè)置超時(shí)時(shí)間,即join(timeout = None)。

代碼如下:

import threading
import time
def test():
    print('子線程開(kāi)始')
    for i in range(3):
        print('第%d次執(zhí)行子線程'%i)
        time.sleep(1)
    print('子線程結(jié)束')
if __name__ == '__main__':
    print('主線程開(kāi)始')
    thread_one = threading.Thread(target=test)
    thread_one.start()
    thread_one.join()#如果注釋掉再看一下運(yùn)行結(jié)果
    print('主線程結(jié)束')

運(yùn)行結(jié)果如下:

主線程開(kāi)始
子線程開(kāi)始
第0次執(zhí)行子線程
第1次執(zhí)行子線程
第2次執(zhí)行子線程
子線程結(jié)束
主線程結(jié)束

把代碼倒數(shù)第二行的等待線程結(jié)束注釋掉,運(yùn)行結(jié)果為:

主線程開(kāi)始
子線程開(kāi)始
第0次執(zhí)行子線程
主線程結(jié)束
第1次執(zhí)行子線程
第2次執(zhí)行子線程
子線程結(jié)束

運(yùn)行結(jié)果會(huì)出現(xiàn)子線程還沒(méi)有結(jié)束,主線程就已經(jīng)結(jié)束的情況,所以我們?cè)黾拥却€程結(jié)束的語(yǔ)句能保障程序的運(yùn)行。

2. 線程停止

我們?cè)趧?chuàng)建線程之后,如果run()方法或者函數(shù)執(zhí)行結(jié)束,那么線程就會(huì)停止,但是當(dāng)我們遇到一些限制條件的時(shí)候,例如我們當(dāng)前的內(nèi)存不支持過(guò)多的線程運(yùn)行,因此當(dāng)線程數(shù)量超過(guò)規(guī)定數(shù)的時(shí)候,我們就要把線程停止,或者我們規(guī)定的時(shí)間到了之后我們就需要把線程停止。

線程停止的方法我們可以采用設(shè)置一個(gè)線程停止變量,代碼如下:

import time
import threading
running = True
def test():
    while running:
        print('線程開(kāi)始工作\n')
        time.sleep(8)
    print('工作完畢')
if __name__ == '__main__':
    thread = threading.Thread(target = test)
    thread.start()
    s = input('是否停止執(zhí)行,確認(rèn)停止請(qǐng)輸入False:')
    if s == 'False':
        running = False

運(yùn)行結(jié)果如下:

線程開(kāi)始工作
是否停止執(zhí)行,確認(rèn)停止請(qǐng)輸入False:False
工作完畢

在這里,我們首先是創(chuàng)建了一個(gè)使線程停止的變量,然后我們?cè)诤瘮?shù)體中進(jìn)行一個(gè)判斷,如果這個(gè)變量為T(mén)rue就執(zhí)行相關(guān)工作,除了這個(gè)變量我們沒(méi)有設(shè)置停止操作,因此只要這個(gè)變量不改變,那么工作完畢這條語(yǔ)句是不會(huì)被執(zhí)行的,那么我們?cè)谥鞒绦蛑邢葎?chuàng)建一個(gè)線程來(lái)使用這個(gè)方法,然后我們可以通過(guò)鍵盤(pán)輸入指令,如果我們輸入的指令為Flase時(shí),那么while中的判斷即為False,因此子線程工作完畢。


點(diǎn)贊(0)

C語(yǔ)言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競(jìng)賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:

一點(diǎn)編程也不會(huì)寫(xiě)的:零基礎(chǔ)C語(yǔ)言學(xué)練課程

解決困擾你多年的C語(yǔ)言疑難雜癥特性的C語(yǔ)言進(jìn)階課程

從零到寫(xiě)出一個(gè)爬蟲(chóng)的Python編程課程

只會(huì)語(yǔ)法寫(xiě)不出代碼?手把手帶你寫(xiě)100個(gè)編程真題的編程百練課程

信息學(xué)奧賽或C++選手的 必學(xué)C++課程

藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競(jìng)賽課入門(mén)課程

手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程

Dotcpp在線編譯      (登錄可減少運(yùn)行等待時(shí)間)