Python多任务(1.多任务的介绍、并发和并行概念及小例子)
目錄
1.多任務(wù)的概念
2.單核CPU是怎么解決多任務(wù)的?
3.多任務(wù)的執(zhí)行方式:并發(fā)和并行
?4.單任務(wù)的執(zhí)行例子:
5.多任務(wù)的執(zhí)行例子:
1.多任務(wù)的概念
? ? 簡(jiǎn)單地說,就是操作系統(tǒng)可以同一時(shí)間執(zhí)行多個(gè)任務(wù)
? ? 在代碼里面,就是一個(gè)程序有多個(gè)地方同時(shí)執(zhí)行
? ? 打個(gè)比方,你一邊用著這瀏覽器上網(wǎng),一邊在聽MP3,一邊在用Word趕作業(yè),這就是多任務(wù)
2.單核CPU是怎么解決多任務(wù)的?
? ?單核:意味著同一時(shí)刻只能執(zhí)行一件事情
? ?操作系統(tǒng)輪流讓各任務(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í)行一樣,這就是所謂的 “時(shí)間片輪轉(zhuǎn)”? 。
3.多任務(wù)的執(zhí)行方式:并發(fā)和并行
? ? 并行: 真的多任務(wù)? ? ?(CPU的核數(shù)大于任務(wù)數(shù)量)
? ? 并發(fā):? 假的多任務(wù)? ? ?(CPU的核數(shù)小于任務(wù)數(shù)量)
? ?真正的并行執(zhí)行多任務(wù)只能在多核CPU上實(shí)現(xiàn),但是,由于任務(wù)數(shù)量遠(yuǎn)遠(yuǎn)多于CPU的核心數(shù)量,所以,操作系統(tǒng)也會(huì)自動(dòng)? ? ? 把很多任務(wù)輪流調(diào)度到每個(gè)核心上執(zhí)行。
?4.單任務(wù)的執(zhí)行例子:
import timedef sing():"""唱歌5秒鐘"""for i in range(5):print("---正在唱唱歌---")time.sleep(1)def dance():"""跳舞5秒鐘"""for i in range(5):print("---正在唱跳舞---")time.sleep(1)def main():sing()dance()if __name__ == '__main__':main()? 運(yùn)行的結(jié)果為:? ? ? 先把唱歌執(zhí)行完花費(fèi)5秒鐘,? 再花費(fèi)5秒鐘執(zhí)行完跳舞,? 一共花費(fèi)10秒鐘
? ? ? ??
5.多任務(wù)的執(zhí)行例子:
import time import threadingdef sing():"""唱歌5秒鐘"""for i in range(5):print("---正在唱唱歌---")time.sleep(1)def dance():"""跳舞5秒鐘"""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()執(zhí)行結(jié)果:? 唱歌和跳舞同步執(zhí)行,執(zhí)行一次花費(fèi)1秒,所以一共執(zhí)行花費(fèi)5秒鐘。
總結(jié)
以上是生活随笔為你收集整理的Python多任务(1.多任务的介绍、并发和并行概念及小例子)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python可视化中的Matplotli
- 下一篇: Python多任务(2.线程的概念以及组