由于線程是操作系統(tǒng)直接支持的執(zhí)行單元,因此,高級(jí)語言通常都內(nèi)置多線程的支持,Python也不例外,并且,Python的線程是真正的PosixThread,而不是模擬出來的線程。
Python的標(biāo)準(zhǔn)庫提供了兩個(gè)模塊:_thread和threading,_thread是低級(jí)模塊,threading是高級(jí)模塊,對(duì)_thread進(jìn)行了封裝。絕大多數(shù)情況下,我們只需要使用threading這個(gè)高級(jí)模塊。
啟動(dòng)一個(gè)線程就是把一個(gè)函數(shù)傳入并創(chuàng)建Thread實(shí)例,然后調(diào)用start()開始執(zhí)行:
importtime,threading#新線程執(zhí)行的代碼:defloop():
print('thread%sisrunning...'%threading.current_thread().name)
n=0
whilen<5:
n=n+1
print('thread%s>>>%s'%(threading.current_thread().name,n))
time.sleep(1)
print('thread%sended.'%threading.current_thread().name)
print('thread%sisrunning...'%threading.current_thread().name)
t=threading.Thread(target=loop,name='LoopThread')
t.start()
t.join()
print('thread%sended.'%threading.current_thread().name)
執(zhí)行結(jié)果如下:
threadMainThreadisrunning...
threadLoopThreadisrunning...
threadLoopThread>>>1
threadLoopThread>>>2
threadLoopThread>>>3
threadLoopThread>>>4
threadLoopThread>>>5
threadLoopThreadended.
threadMainThreadended.
由于任何進(jìn)程默認(rèn)就會(huì)啟動(dòng)一個(gè)線程,我們把該線程稱為主線程,主線程又可以啟動(dòng)新的線程,Python的threading模塊有個(gè)current_thread()函數(shù),它永遠(yuǎn)返回當(dāng)前線程的實(shí)例。
主線程實(shí)例的名字叫MainThread,子線程的名字在創(chuàng)建時(shí)指定,我們用LoopThread命名子線程。
名字僅僅在打印時(shí)用來顯示,完全沒有其他意義,如果不起名字Python就自動(dòng)給線程命名為Thread-1,Thread-2……
以上內(nèi)容為大家介紹了python培訓(xùn)之為什么可以多線程,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。