400-650-7353
您所在的位置:首頁(yè) > IT干貨資料 > python > 【Python基礎知識】進(jìn)程和線(xiàn)程

【Python基礎知識】進(jìn)程和線(xiàn)程

  • 發(fā)布: 優(yōu)就業(yè)it培訓
  • 來(lái)源:
  • 2023-08-17 14:59:00
  • 閱讀()
  • 分享
  • 手機端入口

1、多任務(wù)操作系統

Windows、Linux和Mac OS等一些常用的操作系統都是多任務(wù)操作系統。其中,多任務(wù)是指操作系統可以同時(shí)運行多個(gè)任務(wù)。例如,用戶(hù)使用Windows操作系統可以一邊用瀏覽器上網(wǎng)查閱資料,一邊用音樂(lè )播放器聽(tīng)歌,一邊用PowerPoint制作幻燈片,這就是多任務(wù)。多任務(wù)至少有3個(gè)任務(wù)在操作系統中同時(shí)運行,與此同時(shí)還有一些任務(wù)在后臺運行著(zhù),只是這些任務(wù)沒(méi)有顯示在桌面上而已。

基于摩爾定律,近年來(lái)CPU技術(shù)得到了飛速地發(fā)展,現在多核CPU已經(jīng)成為計算機的“標配”。然而,即使在多年前使用單核CPU,Windows操作系統本身就是多任務(wù)操作系統。多任務(wù)操作系統的CPU是順序執行代碼的,那么單核CPU執行多任務(wù)就需要時(shí)分復用,即操作系統輪流讓各個(gè)任務(wù)交替執行。例如,操作系統中同時(shí)有3個(gè)任務(wù),任務(wù)1執行0.01秒,切換到任務(wù)2;任務(wù)2執行0.01秒,切換到任務(wù)3;任務(wù)3執行0.01秒,切換到任務(wù)1;任務(wù)1執行0.01秒,切換到任務(wù)2……這樣反復循環(huán)執行下去。實(shí)際上,在單核CPU中,每個(gè)任務(wù)都是交替執行的,但是由于CPU的主頻大多數以吉赫茲為單位,執行速度極快,用戶(hù)在使用計算機時(shí),是感覺(jué)不到時(shí)間間隔的,因此,用戶(hù)使用計算機時(shí)就像所有任務(wù)都在同時(shí)執行一樣。

真正地同時(shí)運行多任務(wù)只能在多核CPU上實(shí)現,但由于CPU的核心數量遠遠小于任務(wù)的數量,因此,目前操作系統依舊效仿單核CPU時(shí)的策略,也會(huì )自動(dòng)將很多任務(wù)輪流調度到每個(gè)核心上運行。

2、進(jìn)程與線(xiàn)程

在操作系統中,一個(gè)任務(wù)就是一個(gè)進(jìn)程(Process)。例如,打開(kāi)一個(gè)瀏覽器就是啟動(dòng)了一個(gè)瀏覽器進(jìn)程,打開(kāi)一個(gè)播放器就啟動(dòng)了一個(gè)播放器進(jìn)程,打開(kāi)兩個(gè)Word文檔就啟動(dòng)了兩個(gè)Word進(jìn)程。

有些進(jìn)程可能會(huì )同時(shí)做多件事,如Word可以同時(shí)進(jìn)行打字、拼寫(xiě)檢查、打印等。在一個(gè)進(jìn)程內部,多件事需要同時(shí)做,那么多個(gè)子任務(wù)就需要同時(shí)運行,這些子任務(wù)稱(chēng)為線(xiàn)程(Thread)。

一個(gè)進(jìn)程至少有一個(gè)線(xiàn)程,這是因為一個(gè)進(jìn)程至少要做一件事。如上例所述的Word進(jìn)程可以有多個(gè)線(xiàn)程,而且多個(gè)線(xiàn)程可以同時(shí)運行。與多進(jìn)程類(lèi)似,多線(xiàn)程的運行方式也是由操作系統在多個(gè)線(xiàn)程之間進(jìn)行快速切換。在操作系統中每個(gè)線(xiàn)程都短暫地交替運行,而對于用戶(hù)而言,看起來(lái)就像同時(shí)在運行一樣。當然,基于多核CPU能夠真正地同時(shí)運行多線(xiàn)程。

3、多進(jìn)程與多線(xiàn)程

前文中編寫(xiě)的Python程序,都是執行單任務(wù)的進(jìn)程,而且只有一個(gè)線(xiàn)程。如果多個(gè)任務(wù)要同時(shí)執行怎么辦?實(shí)際中有以下兩種常用的解決方案:

①多進(jìn)程,即啟動(dòng)多個(gè)進(jìn)程,多個(gè)進(jìn)程可以同時(shí)執行多個(gè)任務(wù)(注意,此處每個(gè)進(jìn)程只有一個(gè)線(xiàn)程)。

②多線(xiàn)程,即只啟動(dòng)一個(gè)進(jìn)程,在這個(gè)進(jìn)程中啟動(dòng)多個(gè)線(xiàn)程,這樣多個(gè)線(xiàn)程也可以同時(shí)執行多個(gè)任務(wù)。

除此之外,還可以采用混合模式,即先啟動(dòng)多個(gè)進(jìn)程,每個(gè)進(jìn)程再啟動(dòng)多個(gè)線(xiàn)程。但由于這種模式比以上兩種更復雜,實(shí)際中很少采用。

執行多任務(wù)時(shí),通常各個(gè)任務(wù)之間是有關(guān)聯(lián)的,需要相互通信和協(xié)調。例如,有多個(gè)任務(wù),任務(wù)1有時(shí)必須暫停等待任務(wù)2完成后才能繼續執行,任務(wù)3和任務(wù)4有時(shí)又不能同時(shí)執行,因此,實(shí)現的復雜度要遠遠高于單進(jìn)程單線(xiàn)程的程序。

即使多進(jìn)程或多線(xiàn)程的程序復雜度高且調試困難,但現實(shí)中很多情況都需要設計多任務(wù)框架才能解決問(wèn)題。例如,在手機上看電影時(shí),播放器進(jìn)程中就必須有一個(gè)線(xiàn)程播放視頻,另一個(gè)線(xiàn)程播放音頻,否則,如果采用單線(xiàn)程來(lái)實(shí)現,那么就只能先將視頻播放完再播放音頻,或者先將音頻播放完再播放視頻,這對用戶(hù)而言顯然是不可接受的。

總而言之,多任務(wù)可以由多進(jìn)程完成,也可以由一個(gè)進(jìn)程內的多線(xiàn)程完成。如何調度進(jìn)程和線(xiàn)程,完全由操作系統決定,Python程序自己不能決定什么時(shí)候執行,執行多長(cháng)時(shí)間。多進(jìn)程和多線(xiàn)程的程序涉及同步、數據共享等問(wèn)題,編寫(xiě)起來(lái)比較復雜。

Python既支持多進(jìn)程,又支持多線(xiàn)程,下面會(huì )介紹編寫(xiě)這兩種多任務(wù)程序的方法。

文章“【Python基礎知識】進(jìn)程和線(xiàn)程”已幫助

更多內容

>>本文地址:http://www.76097.cn/zhuanye/2023/70623.html

THE END  

聲明:本站稿件版權均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉載。

1 您的年齡

2 您的學(xué)歷

3 您更想做哪個(gè)方向的工作?

獲取測試結果
  • 大前端大前端
  • 大數據大數據
  • 互聯(lián)網(wǎng)營(yíng)銷(xiāo)互聯(lián)網(wǎng)營(yíng)銷(xiāo)
  • JavaJava
  • Linux云計算Linux
  • Python+人工智能Python
  • 嵌入式物聯(lián)網(wǎng)嵌入式
  • 全域電商運營(yíng)全域電商運營(yíng)
  • 軟件測試軟件測試
  • 室內設計室內設計
  • 平面設計平面設計
  • 電商設計電商設計
  • 網(wǎng)頁(yè)設計網(wǎng)頁(yè)設計
  • 全鏈路UI/UE設計UI設計
  • VR/AR游戲開(kāi)發(fā)VR/AR
  • 網(wǎng)絡(luò )安全網(wǎng)絡(luò )安全
  • 新媒體與短視頻運營(yíng)新媒體
  • 直播帶貨直播帶貨
  • 智能機器人軟件開(kāi)發(fā)智能機器人
 

快速通道fast track

近期開(kāi)班時(shí)間TIME