<address id="bjr5b"><form id="bjr5b"></form></address>

    <form id="bjr5b"></form>

        <address id="bjr5b"><listing id="bjr5b"><meter id="bjr5b"></meter></listing></address>

          <form id="bjr5b"></form>
          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既支持多進程,又支持多線程,下面會介紹編寫這兩種多任務程序的方法。

          學習疑問申請解答
          您的姓名
          您的電話
          意向課程
           

          中公優就業

          IT小助手

          掃描上方二維碼添加好友,請備注:599,享學習福利。

          >>本文地址:
          注:本站稿件未經許可不得轉載,轉載請保留出處及源文件地址。

          推薦閱讀

          優就業:ujiuye

          關注中公優就業官方微信

          • 關注微信回復關鍵詞“大禮包”,享學習福利
          QQ交流群
          在線疑問解答
          (加群備注“網站”)
          IT培訓交流群 加入群聊 +
          軟件測試 加入群聊 +
          全鏈路UI/UE設計 加入群聊 +
          Python+人工智能 加入群聊 +
          互聯網營銷 加入群聊 +
          Java開發 加入群聊 +
          PHP開發 加入群聊 +
          VR/AR游戲開發 加入群聊 +
          大前端 加入群聊 +
          大數據 加入群聊 +
          Linux云計算 加入群聊 +
          優就業官方微信
          掃碼回復關鍵詞“大禮包”
          享學習福利

          測一測
          你適合學哪門IT技術?

          1 您的年齡

          2 您的學歷

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

          獲取測試結果
           
          課程資料、活動優惠 領取通道
           
           
          国产成人精品亚洲日本语言
          <address id="bjr5b"><form id="bjr5b"></form></address>

            <form id="bjr5b"></form>

                <address id="bjr5b"><listing id="bjr5b"><meter id="bjr5b"></meter></listing></address>

                  <form id="bjr5b"></form>