本文講述2個(gè)函數(shù)任務(wù),使用python的多線程同時(shí)執(zhí)行這2個(gè)任務(wù),代碼如下:
代碼運(yùn)行結(jié)果如下:
正在運(yùn)行任務(wù)1,打印: 0
正在運(yùn)行任務(wù)2,聽(tīng)音樂(lè): 北京歡迎您
正在運(yùn)行任務(wù)1,打印: 1
正在運(yùn)行任務(wù)2,聽(tīng)音樂(lè): 紅日
正在運(yùn)行任務(wù)1,打印: 2
正在運(yùn)行任務(wù)2,聽(tīng)音樂(lè): 故宮的記憶
正在運(yùn)行任務(wù)1,打印: 3
正在運(yùn)行任務(wù)2,聽(tīng)音樂(lè): 義勇軍進(jìn)行曲
正在運(yùn)行任務(wù)1,打印: 4
正在運(yùn)行任務(wù)1,打?。?5
總結(jié):最終實(shí)現(xiàn)了任務(wù)task1和task2同步進(jìn)行,提高了效率
代碼圖例如下:
以上是兩個(gè)任務(wù)同時(shí)進(jìn)行,如果要實(shí)現(xiàn)任務(wù)1完成了再執(zhí)行任務(wù)2,只需要在t1.start()后加個(gè)t1.join()即可,代碼示例如下:
from threading import Thread #導(dǎo)入線程函數(shù)from time import sleep #導(dǎo)入時(shí)間休眠函數(shù)def task1(n): #定義任務(wù)1 for x in range(n): #遍歷數(shù)組n里的x print('正在運(yùn)行任務(wù)1,打印:',x) #打印正則運(yùn)行任務(wù)1,打印x的值 sleep(0.5) #時(shí)間休眠0.5秒def task2(): #定義任務(wù)2 list1=['北京歡迎您','紅日','故宮的記憶','義勇軍進(jìn)行曲'] #定義列表1位4首歌曲名 for info in list1: #遍歷list1里的信息 print('正在運(yùn)行任務(wù)2,聽(tīng)音樂(lè):',info) #打印正在運(yùn)行任務(wù)2,聽(tīng)音樂(lè):音樂(lè)名稱(chēng) sleep(0.6) #時(shí)間休眠0.6秒def main(): #定義main函數(shù) t1=Thread(target=task1,args=(6,)) #定義線程t1,線程任務(wù)為調(diào)用task1函數(shù),task1函數(shù)的參數(shù)是6 t2=Thread(target=task2) #定義線程t2,線程任務(wù)為調(diào)用task2函數(shù),task2函數(shù)無(wú)參數(shù) t1.start() #開(kāi)始運(yùn)行t1線程 t1.join() #t1線程完成了才執(zhí)行后續(xù)的動(dòng)作 t2.start() #開(kāi)始運(yùn)行t2線程if __name__ == '__main__': main() #調(diào)用main函數(shù)
上述代碼最終的運(yùn)行結(jié)果如下所示:
正在運(yùn)行任務(wù)1,打印: 0
正在運(yùn)行任務(wù)1,打?。?1
正在運(yùn)行任務(wù)1,打印: 2
正在運(yùn)行任務(wù)1,打?。?3
正在運(yùn)行任務(wù)1,打印: 4
正在運(yùn)行任務(wù)1,打?。?5
正在運(yùn)行任務(wù)2,聽(tīng)音樂(lè): 北京歡迎您
正在運(yùn)行任務(wù)2,聽(tīng)音樂(lè): 紅日
正在運(yùn)行任務(wù)2,聽(tīng)音樂(lè): 故宮的記憶
正在運(yùn)行任務(wù)2,聽(tīng)音樂(lè): 義勇軍進(jìn)行曲
聯(lián)系客服