現實生活中,有很多場景中的事情是同時進行的,比如開車的時候,手和腳共同來駕駛汽車,再比如唱歌跳舞也是同時進行的,
以上這些可以理解為多任務,那在程式中怎么能做到多任務,它有什么好處?
接下來我們來看看沒有多任務的程式是什么效果,
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()
運行結果:

這個程式執行需要10秒鐘,但是如果唱歌和跳舞能同時執行的話,只需要5秒鐘就可以了,
沒有多任務的時候,想一起執行上面的多個函式是做不到的,我們要學習的多任務就是多個函式(唱歌和跳舞)一起執行,
接下來我們來實作簡單的多任務,
大家暫時不用關系代碼怎么寫,后續我們會具體講解,
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()
運行結果:

多任務的概念
什么叫“多任務”呢?簡單地說,就是作業系統可以同時運行多個任務,
打個比方,你一邊在用瀏覽器上網,一邊在聽MP3,一邊在用 Word 趕作業,這就是多任務,
至少同時有3個任務正在運行,還有很多任務悄悄地在后臺同時運行著,只是桌面上沒有顯示而已,

現在,多核 CPU 已經非常普及了,但是,即使過去的單核CPU,也可以執行多任務,
由于 CPU 執行代碼都是順序執行的,那么,單核CPU是怎么執行多任務的呢?
答案就是作業系統輪流讓各個任務交替執行,任務1執行0.01秒,切換到任務2,任務2執行0.01秒,再切換到任務3,執行0.01秒……這樣反復執行下去,
表面上看,每個任務都是交替執行的,但是,由于CPU的執行速度實在是太快了,我們感覺就像所有任務都在同時執行一樣,
真正的并行執行多任務只能在多核 CPU 上實作,但是,由于任務數量遠遠多于 CPU 的核心數量,所以,作業系統也會自動把很多任務輪流調度到每個核心上執行,
那這里就引出了2個概念,
并發
指的是任務數多于 cpu 核數,通過作業系統的各種任務調度演算法,實作多個任務“一起”執行,
多個行程指令被快速輪換執行,使得在宏觀上具有多個行程同時執行的效果,
實際上總有一些任務不在執行,因為切換任務的速度相當快,看上去一起執行而已,
并行
指的是任務數小于等于 cpu 核數,在同一時刻有多條指令在多個處理器上真的同時執行,
多任務的好處
多任務可以簡單地理解為同時執行多個不同程式,它有如下好處:
- 可以把占據長時間的程式中的任務放到后臺去處理,
- 用戶界面可以更加吸引人,比如用戶點擊了一個按鈕去觸發某些事件的處理,界面上可以彈出一個進度條來顯示處理的進度,
- 程式的運行速度可能加快,
- 在一些等待的任務實作上如用戶輸入、檔案讀寫和網路收發資料等,可以釋放一些珍貴的資源如記憶體占用等等,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/56142.html
標籤:Python
