多工介紹
在現實生活中,有很多的場景中的事情是同時進行的,比如跳舞和唱歌是同時進行的。
在程式中,可以使用**來模擬唱歌和跳舞的功能:
from time import sleep
def sing():
for i in range(3):
print("正在唱歌...%d"%i)
sleep(1)
def dance():
for i in range(3):
print("正在跳舞...%d"%i)
sleep(1)
if __name__ == '__main__':
sing() #唱歌
dance() #跳舞
很顯然剛剛的程式並沒有完成唱歌和跳舞同時進行的要求
如果想要實現「唱歌跳舞」同時進行,那麼就需要乙個新的方法,叫做:多工
什麼叫「多工」呢?簡單地說,就是作業系統可以同時執行多個任務。打個比方,你一邊在用瀏覽器上網,一邊在聽***,一邊在用word趕作業,這就是多工,至少同時有3個任務正在執行。還有很多任務悄悄地在後台同時執行著,只是桌面上沒有顯示而已。
現在,多核cpu已經非常普及了,但是,即使過去的單核cpu,也可以執行多工。由於cpu執行**都是順序執行的,那麼,單核cpu是怎麼執行多工的呢?
答案就是作業系統輪流讓各個任務交替執行,任務1執行0.01秒,切換到任務2,任務2執行0.01秒,再切換到任務3,執行0.01秒……這樣反覆執行下去。表面上看,每個任務都是交替執行的,但是,由於cpu的執行速度實在是太快了,我們感覺就像所有任務都在同時執行一樣。
真正的並行執行多工只能在多核cpu上實現,但是,由於任務數量遠遠多於cpu的核心數量,所以,作業系統也會自動把很多任務輪流排程到每個核心上執行。
對於作業系統來說,乙個任務就是乙個程序(process),比如開啟乙個瀏覽器就是啟動乙個瀏覽器程序,開啟乙個記事本就啟動了乙個記事本程序,開啟兩個記事本就啟動了兩個記事本程序,開啟乙個word就啟動了乙個word程序。
有些程序還不止同時幹一件事,比如word,它可以同時進行打字、拼寫檢查、列印等事情。在乙個程序內部,要同時幹多件事,就需要同時執行多個「子任務」,我們把程序內的這些「子任務」稱為執行緒(thread)。
由於每個程序至少要幹一件事,所以,乙個程序至少有乙個執行緒。當然,像word這種複雜的程序可以有多個執行緒,多個執行緒可以同時執行,多執行緒的執行方式和多程序是一樣的,也是由作業系統在多個執行緒之間快速切換,讓每個執行緒都短暫地交替執行,看起來就像同時執行一樣。當然,真正地同時執行多執行緒需要多核cpu才可能實現。
我們前面編寫的所有的python程式,都是執行單任務的程序,也就是只有乙個執行緒。如果我們要同時執行多個任務怎麼辦?
有兩種解決方案:
一種是啟動多個程序,每個程序雖然只有乙個執行緒,但多個程序可以一塊執行多個任務。
還有一種方法是啟動乙個程序,在乙個程序內啟動多個執行緒,這樣,多個執行緒也可以一塊執行多個任務。
當然還有第三種方法,就是啟動多個程序,每個程序再啟動多個執行緒,這樣同時執行的任務就更多了,當然這種模型更複雜,實際很少採用。
總結一下就是,多工的實現有3種方式:
1:多程序模式;
2:多執行緒模式;
3: 多程序+多執行緒模式。
併發:指的是任務數多餘cpu核數,通過作業系統的各種任務排程演算法,實現用多個任務「一起」執行(實際上總有一些任務不在執行,因為切換任務的速度相當快,看上去一起執行而已)或者說:同一時刻只能有一條指令執行,但多個程序指令被快速輪換執行,使得巨集觀上具有多個程序同時執行的效果
並行:指的是任務數小於等於cpu核數,即任務真的是一起執行的,或者說是:同一時刻有多條指令在多個處理器上同時執行
Python 多工介紹
僅用學習參考 多工介紹 現實生活中 有很多的場景中的事情是同時進行的,比如開車的時候 手和腳共同來駕駛汽車,再比如唱歌跳舞也是同時進行的 試想,如果把唱歌和跳舞這2件事情分開依次完成的話,估計就沒有那麼好的效果了 想一下場景 先唱歌,然後在跳舞,o o哈哈 程式中如下程式,來模擬 唱歌跳舞 這件事情...
8 6多工介紹
1.現實中的多工 看著動畫吃飯 2.計算機中的多工 計算機中的多工是指,作業系統同時完成多項任務的處理。此處同時是指同乙個時間段內,而非某個瞬時的時間點。多工處理是指,使用者在同一時間段內執行多個應用程式,每個應用程式就可以稱之為乙個任務。現在,多核cpu已經非常普及了,但是,即使過去的單核cpu,...
多工的介紹
利用現學知識能夠讓兩個函式或者方法同時執行嗎?不能,因為之前所寫的程式都是單任務的,也就是說乙個函式或者方法執行完成另外乙個函式或者方法才能執行,要想實現這種操作就需要使用多工。多工的最大好處是充分利用cpu資源,提高程式的執行效率。多工是指在同一時間內執行多個任務,例如 現在電腦安裝的作業系統都是...