您好,登錄后才能下訂單哦!
這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)python程序中的多任務(wù)詳解,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
import time def sing(): for i in range(5): print("正在唱...") time.sleep(1) def dance(): for i in range(5): print("正在跳...") time.sleep(1) def main(): sing() dance() if __name__ == "__main__": main()
運(yùn)行結(jié)果:
這個(gè)程序執(zhí)行需要10秒鐘,但是如果唱歌和跳舞能同時(shí)執(zhí)行的話,只需要5秒鐘就可以了。
沒有多任務(wù)的時(shí)候,想一起執(zhí)行上面的多個(gè)函數(shù)是做不到的,我們要學(xué)習(xí)的多任務(wù)就是多個(gè)函數(shù)(唱歌和跳舞)一起執(zhí)行。
接下來我們來實(shí)現(xiàn)簡(jiǎn)單的多任務(wù)。
大家暫時(shí)不用關(guān)系代碼怎么寫,后續(xù)我們會(huì)具體講解。
import time import threading def sing(): for i in range(5): print("正在唱...") time.sleep(1) def dance(): for i in range(5): print("正在跳...") time.sleep(1) def main(): t1 = threading.Thread(target=sing) t2 = threading.Thread(target=dance) t1.start() t2.start() if __name__ == "__main__": main()
運(yùn)行結(jié)果:
多任務(wù)的概念
什么叫“多任務(wù)”呢?簡(jiǎn)單地說,就是操作系統(tǒng)可以同時(shí)運(yùn)行多個(gè)任務(wù)。
打個(gè)比方,你一邊在用瀏覽器上網(wǎng),一邊在聽MP3,一邊在用 Word 趕作業(yè),這就是多任務(wù)。
至少同時(shí)有3個(gè)任務(wù)正在運(yùn)行,還有很多任務(wù)悄悄地在后臺(tái)同時(shí)運(yùn)行著,只是桌面上沒有顯示而已。
現(xiàn)在,多核 CPU 已經(jīng)非常普及了,但是,即使過去的單核CPU,也可以執(zhí)行多任務(wù)。
由于 CPU 執(zhí)行代碼都是順序執(zhí)行的,那么,單核CPU是怎么執(zhí)行多任務(wù)的呢?
答案就是操作系統(tǒng)輪流讓各個(gè)任務(wù)交替執(zhí)行,任務(wù)1執(zhí)行0.01秒,切換到任務(wù)2,任務(wù)2執(zhí)行0.01秒,再切換到任務(wù)3,執(zhí)行0.01秒……這樣反復(fù)執(zhí)行下去。
表面上看,每個(gè)任務(wù)都是交替執(zhí)行的,但是,由于CPU的執(zhí)行速度實(shí)在是太快了,我們感覺就像所有任務(wù)都在同時(shí)執(zhí)行一樣。
真正的并行執(zhí)行多任務(wù)只能在多核 CPU 上實(shí)現(xiàn),但是,由于任務(wù)數(shù)量遠(yuǎn)遠(yuǎn)多于 CPU 的核心數(shù)量,所以,操作系統(tǒng)也會(huì)自動(dòng)把很多任務(wù)輪流調(diào)度到每個(gè)核心上執(zhí)行。
那這里就引出了2個(gè)概念。
并發(fā)
指的是任務(wù)數(shù)多于 cpu 核數(shù),通過操作系統(tǒng)的各種任務(wù)調(diào)度算法,實(shí)現(xiàn)多個(gè)任務(wù)“一起”執(zhí)行。
多個(gè)進(jìn)程指令被快速輪換執(zhí)行,使得在宏觀上具有多個(gè)進(jìn)程同時(shí)執(zhí)行的效果。
實(shí)際上總有一些任務(wù)不在執(zhí)行,因?yàn)榍袚Q任務(wù)的速度相當(dāng)快,看上去一起執(zhí)行而已。
并行
指的是任務(wù)數(shù)小于等于 cpu 核數(shù),在同一時(shí)刻有多條指令在多個(gè)處理器上真的同時(shí)執(zhí)行。
多任務(wù)的好處
多任務(wù)可以簡(jiǎn)單地理解為同時(shí)執(zhí)行多個(gè)不同程序,它有如下好處:
上述就是小編為大家分享的python程序中的多任務(wù)詳解了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(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)容。