Python多任務【並行/併發】

1.什麼是“多任務”呢?

    簡單地說,就是操作系統可以同時執行多個任務

    在代碼裏面,就是一個程序有多個地方同時執行

    打個比方,你一邊用着這瀏覽器上網,一邊在聽MP3,一邊在用Word趕作業,這就是多任務

2.單核CPU是怎麼解決多任務的?

   單核:意味着同一時刻只能執行一件事情

   操作系統輪流讓各任務交替執行,任務1執行0.01秒,切換到任務2,任務2執行0.01,再切換到任務3,

    執行0.01秒。。。。。這樣反覆的執行下去,每個任務都是交替執行的,但是由於CPU的執行速度實在是太快了,
    我們感覺就像是所有任務都在同時執行一樣,這就是所謂的 “時間片輪轉”  。

3. 並行和併發

    並行: 真的多任務     (CPU的核數大於任務數量)

     併發:  假的多任務     (CPU的核數小於任務數量)

   真正的並行執行多任務只能在多核CPU上實現,但是,由於任務數量遠遠多於CPU的核心數量,所以,操作系統也會自動      把很多任務輪流調度到每個核心上執行。

 單任務:

import time
import threading
def dance():
    for i in range(5):
        print("---dancing---")
        time.sleep(1)
def sing():
    for i in range(5):
        print("---singing---")
        time.sleep(1)
def main():
    print(time.ctime())
    dance()
    sing()
    print(time.ctime())
if __name__ == '__main__':
    main()

 運行的結果爲:      先把dance執行完花費5秒鐘,  再花費5秒鐘執行完sing,  一共花費10秒鐘

多任務:

 

import time
import threading
def dance():
    for i in range(5):
        print("---dancing---")
        time.sleep(1)
        print(time.ctime())
def sing():
    for i in range(5):
        print("---singing---")
        time.sleep(1)
        print(time.ctime())
def main():
    t1 = threading.Thread(target = dance)
    t2 = threading.Thread(target = sing)
    t1.start()
    t2.start()
if __name__ == '__main__':
    main()
    

  運行的結果爲:     兩個任務同步執行,每次花費1秒,共花費5秒,從下圖的測試時間可以看出兩個任務是同步執行的。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章