<span id="h9j9p"><th id="h9j9p"><th id="h9j9p"></th></th></span>
<sub id="h9j9p"><listing id="h9j9p"></listing></sub>

    <noframes id="h9j9p"><form id="h9j9p"></form>
    <form id="h9j9p"></form>
      <sub id="h9j9p"><dfn id="h9j9p"><menuitem id="h9j9p"></menuitem></dfn></sub>

      <form id="h9j9p"><nobr id="h9j9p"><meter id="h9j9p"></meter></nobr></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 您更想做哪個方向的工作?

        獲取測試結果
         
        課程資料、活動優惠 領取通道
         
         
        亚洲日韩中文字幕一区
        <span id="h9j9p"><th id="h9j9p"><th id="h9j9p"></th></th></span>
        <sub id="h9j9p"><listing id="h9j9p"></listing></sub>

          <noframes id="h9j9p"><form id="h9j9p"></form>
          <form id="h9j9p"></form>
            <sub id="h9j9p"><dfn id="h9j9p"><menuitem id="h9j9p"></menuitem></dfn></sub>

            <form id="h9j9p"><nobr id="h9j9p"><meter id="h9j9p"></meter></nobr></form>