<strong id="6sqeg"><object id="6sqeg"></object></strong>
<tt id="6sqeg"><s id="6sqeg"></s></tt>
  • <code id="6sqeg"></code>
  • 歡迎訪問牛耳教育官網 專注實戰IT培訓技術20年!
    400-0731-162
    當前位置:IT培訓機構 > Python培訓 > Python培訓:Python的性能簡析

    Python培訓:Python的性能簡析

    時間: 2020-09-17 | 作者: admin | 分類:Python培訓 | 關鍵字:Python培訓,Python編程 | 閱讀量:

    導讀:如果在終端輸入pythonmyscript.py,CPython會開始對這段代碼進行一系列的讀取、詞法分析、解析、編譯、解釋和運行。

        如果你的應用是基于單線程和單解釋器的,討論速度是沒有意義的,因為去掉GIL不會影響代碼性能。如果您想在單個解釋器(Python進程)中使用線程來實現并發,并且您的線程是IO密集型的(如網絡IO或磁盤IO),您將看到GIL爭用的結果。
     
        如果您有一個web應用程序(比如Django)并且使用WSGI,那么您的web應用程序的每個請求都將是一個獨立的Python解釋器,所以每個請求只有一個鎖。因為Python解釋器啟動慢,一些WSGI集成了可以保持Python進程的“守護進程”。
    Python培訓:Python的性能簡析
     
        其他Python解釋器的速度呢?
     
        PyPy擁有GIL,通常比CPython至少快三倍。
     
        Jython沒有GIL,因為在Jython中Python線程由Java線程表示,這要歸功于JVM內存管理系統。
     
        JavaScript是怎么做到的?
     
        首先,所有的Javascript引擎都使用標記和清除的垃圾收集系統,而前面提到的GIL的基本需求是CPython的存儲管理算法。
     
        JavaScript沒有GIL,但是因為它是單線程的,所以也不需要GIL。
     
        JavaScript通過事件循環和提交/回調模式實現異步編程的并發。Python有一個類似異步事件循環的過程。
     
        “因為是解釋性語言”
     
        經常聽到這句話。我認為這只是對CPython實際工作原理的簡單解釋。如果在終端輸入pythonmyscript.py,CPython會開始對這段代碼進行一系列的讀取、詞法分析、解析、編譯、解釋和運行。
     
        這個過程中很重要的一步就是在編譯階段創建一個.pyc文件,這個字節碼序列會被寫到Python3下的__pycache__/路徑中的一個文件中(對于Python2,文件路徑是一樣的)。此步驟不僅適用于腳本文件,還適用于所有導入的代碼,包括第三方模塊。
     
        所以大多數時候(除非你寫的代碼只運行一次),Python是在解釋字節碼,并在本地執行。
     
    Python培訓:Python的性能簡析

        我們來對比一下Java和C#。NET:
     
        Java編譯成“中間語言”,然后Java虛擬機讀取字節碼,立即編譯成機器碼。CIL的通用中間語言。NET也是一樣,它的公共語言運行庫(CLR)也是通過即時編譯翻譯成機器碼的。
     
        那么,如果Python使用和Java、C#一樣的虛擬機和一些字節碼,為什么在基準測試中會慢很多呢?首先,NET和Java都是用JIT編譯的。
     
        JIT,也稱為即時編譯,需要一種中間語言來將代碼分成塊(或數據幀)。預編譯器(AOT)的設計確保了CPU在交互之前能夠理解每一行代碼。
     
        JIT本身并沒有使執行更快,因為它仍然執行相同的字節碼序列。但是,JIT允許在運行時進行優化。一個好的JIT優化器可以檢測哪些部分執行的更頻繁,這些部分被稱為“熱點”。然后,它會用更高效的代碼替換它們來完成優化。
     
        這意味著當一個計算機應用程序需要重復做一件事時,速度會更快。另外,我們需要知道Java和C#都是強類型語言(變量需要預定義),這樣優化器就可以對代碼做更多的假設。
    免責聲明:本文內容來源于公開網絡,若涉及侵權聯系盡快刪除!,【本文標題和網址】Python培訓:Python的性能簡析:http://www.eaglelawnandsnow.com/Pythondt/861.html
    申請免費試學
    快捷咨詢
    資深IT講師一對一為您解答IT問題
    電話
    咨詢服務電話
    400-0731-162
    微信
    IT培訓_長沙java培訓機構_專注于實戰IT培訓技術20年-牛耳教育官網
    關注了解更多IT知識
    QQ
    熱門課程
    java軟件開發課程 Java是一種可以撰寫跨平臺應用程不齊人60%Java工程師缺口序的面向對象的程序設計語言。Java技術具有卓越的通用性、高效性、...
    嵌入式應用開發課程 嵌入式開發就是指在嵌入式操作系統下進行開發,包括在系統化設計指導下的硬件和軟件以及綜合研發。除暫且分離硬件的...
    軟件測試課程 軟件測試具有人才缺口大、發展方向廣、專業無限制、適合零基礎、技術上手快、職業生涯穩等優勢。 人才缺口大 國內測試...
    Web前端開發課程 web前端開發是創建Web頁面或app等前端界面呈現給用戶的過程,通過HTML,CSS及JavaScript以及衍生出來的各種技術、框架、解決方...
    java+大數據課程 什么是Java大數據? Java,是一門面向對象編程語言,具有功能強大和簡單易用的特征。作為**受歡迎的計算機語言,發展至今...
    python人工智能課程 Python是一門神奇的編程語言,它具有簡單易學、就業面廣、就業薪資高、競爭壓力小、開發效率高、行業風口等6個優勢,下...
    熱門資訊
    本文:(零基礎學java)零基礎也能學Java,5大Java學習方法!,最近有很多同學來問小編,關于學習java的方法,下面小編根據...
    大家的生活已經離不開嵌入式就連常用的共享單車都離不開嵌入式。所以越來越多的人看中了嵌入式的就業前景,轉行來做嵌...
    Web前端培訓機構的好壞直接決定了你學習后的就業薪資,市面上web前端培訓機構那么多,應該如何選擇靠譜的web前端培訓機構...
    當談到Python時,一般指的是CPython。但Python實際上是一門語言規范,只是定義了Python這門語言應該具備哪些語言要素,應當能...
    目前,Python非常流行并且被廣泛使用。它是目前最熱門的行業之一,競爭激烈,工資高,未來發展出色。但是對于學習Pytho...
    打算參加嵌入式培訓的同學對于嵌入式培訓課程的內容都特別的關心,只有在了解了課程內容之后才能更好的知道這個嵌入式...
    2020年學習嵌入式晚不晚?1、學技術不像學藝術,只要堅持,任何時候學都不晚。很多人對于學習嵌入式應用開發都會有所顧...
    本文(零基礎學python)0基礎學習Python容易犯哪些錯誤呢?主要介紹1. 忘記寫冒號 在if、elif、else、for、while、class、def 語句后...
    本文:IT培訓就業感言(牛耳教育IT培訓就業感言),介紹:轉眼間幾個月在牛耳教育的IT培訓就結束了,從學習到就業也算是...
    it培訓學校有用嗎?其實判斷IT培訓學校有沒有用,看培訓的課程是否能滿足自己的需求就可以了,如果培訓的課程自己都了...