<th id="rtb5f"></th>
<span id="rtb5f"></span>
<strike id="rtb5f"></strike>
<th id="rtb5f"></th>
<span id="rtb5f"><noframes id="rtb5f"><span id="rtb5f"></span>
<th id="rtb5f"></th>
<th id="rtb5f"></th>
<progress id="rtb5f"><noframes id="rtb5f"><span id="rtb5f"></span>
<progress id="rtb5f"></progress><span id="rtb5f"><noframes id="rtb5f">
400-650-7353
您所在的位置:首頁 > IT干貨資料 > python > 【Python基礎知識】進程和線程

【Python基礎知識】進程和線程

  • 發布: 優就業it培訓
  • 來源:
  • 2021-10-29 14:59:37
  • 閱讀()
  • 分享
  • 手機端入口

1、多任務操作系統

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

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

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

2、進程與線程

在操作系統中,一個任務就是一個進程(Process)。例如,打開一個瀏覽器就是啟動了一個瀏覽器進程,打開一個播放器就啟動了一個播放器進程,打開兩個Word文檔就啟動了兩個Word進程。

有些進程可能會同時做多件事,如Word可以同時進行打字、拼寫檢查、打印等。在一個進程內部,多件事需要同時做,那么多個子任務就需要同時運行,這些子任務稱為線程(Thread)。

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

3、多進程與多線程

前文中編寫的Python程序,都是執行單任務的進程,而且只有一個線程。如果多個任務要同時執行怎么辦?實際中有以下兩種常用的解決方案:

①多進程,即啟動多個進程,多個進程可以同時執行多個任務(注意,此處每個進程只有一個線程)。

②多線程,即只啟動一個進程,在這個進程中啟動多個線程,這樣多個線程也可以同時執行多個任務。

除此之外,還可以采用混合模式,即先啟動多個進程,每個進程再啟動多個線程。但由于這種模式比以上兩種更復雜,實際中很少采用。

執行多任務時,通常各個任務之間是有關聯的,需要相互通信和協調。例如,有多個任務,任務1有時必須暫停等待任務2完成后才能繼續執行,任務3和任務4有時又不能同時執行,因此,實現的復雜度要遠遠高于單進程單線程的程序。

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

總而言之,多任務可以由多進程完成,也可以由一個進程內的多線程完成。如何調度進程和線程,完全由操作系統決定,Python程序自己不能決定什么時候執行,執行多長時間。多進程和多線程的程序涉及同步、數據共享等問題,編寫起來比較復雜。

Python既支持多進程,又支持多線程,下面會介紹編寫這兩種多任務程序的方法。

文章“【Python基礎知識】進程和線程”已幫助

更多內容

>>本文地址:http://www.nuevomajority.com/zhuanye/2021/70623.html

THE END  

聲明:本站稿件版權均屬中公教育優就業所有,未經許可不得擅自轉載。

領取零基礎自學IT資源

(內含學習路線+視頻教程+項目源碼)

涉及Java、Web前端、UI設計、軟件測試、Python等多個IT熱門方向

打開微信掃一掃即可領取哦~

1 您的年齡

2 您的學歷

3 您更想做哪個方向的工作?

獲取測試結果
  • 大前端大前端
  • 大數據大數據
  • 互聯網營銷互聯網營銷
  • JavaJava
  • Linux云計算Linux
  • Python+人工智能Python
  • 嵌入式物聯網嵌入式
  • 全域電商運營全域電商運營
  • 軟件測試軟件測試
  • 室內設計室內設計
  • 平面設計平面設計
  • 電商設計電商設計
  • 網頁設計網頁設計
  • 全鏈路UI/UE設計UI設計
  • VR/AR游戲開發VR/AR
  • 網絡安全網絡安全
  • 新媒體與短視頻運營新媒體
  • 直播帶貨直播帶貨
  • 智能機器人軟件開發智能機器人
 

快速通道fast track

近期開班時間TIME

少妇夜夜尖叫高潮
<th id="rtb5f"></th>
<span id="rtb5f"></span>
<strike id="rtb5f"></strike>
<th id="rtb5f"></th>
<span id="rtb5f"><noframes id="rtb5f"><span id="rtb5f"></span>
<th id="rtb5f"></th>
<th id="rtb5f"></th>
<progress id="rtb5f"><noframes id="rtb5f"><span id="rtb5f"></span>
<progress id="rtb5f"></progress><span id="rtb5f"><noframes id="rtb5f">
<蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>