python的解譯器和位元組碼編譯__python

來源:互聯網
上載者:User

一.  Python 解譯器

       Python 是一門程式設計語言,同時也是一個解譯器的軟體包。 解譯器是一種讓其他程式運行起來的程式。 當你編寫了一段Python 程式,Python 解譯器將讀取程式,並按照其中的命令執行,得出結果。解譯器是代碼與電腦硬體之間的軟體邏輯層。

       當Python 包安裝後,它包含了一些最小化的組件: 一個解譯器和支援的庫。 根據使用方式的不同,Python 解譯器可能採取可執行程式的形式,或者作為連結到另一個程式的一系列庫。 按照使用的Python 版本的不同,解譯器本身可以用C程式實現,或者一些Java 類實現,或者其他形式。 無論採用哪種形式,編寫的python代碼必須在解譯器中運行,所以,要運行Python,必須先安裝Python 解譯器。

 

二.  Python 程式執行過程

 

2.1 位元組碼編譯

       當程式執行時,Python 內部(對大多數使用者是完全隱藏的)會先將原始碼編譯成位元組碼的形式。 編譯是一個簡單的翻譯過程,而且位元組碼是原始碼底層的,與平台無關的表現形式。 概括的說,Python 通過把每一源語句分解為單一步驟來將這些源語句翻譯成一組位元組碼指令。 這些位元組碼可以提高執行速度,比起文字檔中的原始代碼語句,位元組碼的運行速度要快很多。

       翻譯過程對使用者來說是隱藏的,如果Python 進程在機器上有寫入的許可權,那麼它將程式的位元組碼儲存為一個以.pyc為副檔名的檔案,pyc檔案就是編譯過的py源檔案。 當程式運行後,會在相同的目錄下查看這些pyc檔案。

       Python 這樣儲存位元組碼是作為一種啟動速度的最佳化。 在下一次運行程式時,如果在上次儲存位元組碼之後沒有修改過原始碼,Python將會載入pyc 檔案,並跳過編譯這個步驟。 當pyhon 必須重新編譯時間,它會自動檢查源檔案的時間戳記,如果又儲存了原始碼,下次程式運行時,位元組碼將自動重新建立。

       如果Python 無法在機器上寫入位元組碼,程式仍然可以工作,此時位元組碼將會在記憶體中產生並在程式結束時簡單丟棄。 儘管這樣,由於pyc 檔案能夠加速啟動,對於大型程式,應該給與python寫入許可權,如果儲存了pyc檔案,能加速程式的程式。

 

 

2.2  Python 虛擬機器(PVM)

       一旦程式編譯成位元組碼或者位元組碼從已經存在的pyc 檔案中載入,之後的位元組碼被發送到稱為Python虛擬機器(Python Virtual Machine)上來執行。PVM 就是迭代運行位元組碼指令的一個大迴圈,一個接一個地完成操作。 PVM 是Python 的運行引擎,它時常表現為Python系統的一部分,並且它是實際運行指令碼的組件。 這步操作也就是Python 解譯器的最後步驟。

 

2.3 效能

       C和C++這類完全編譯語言需要build 或者make,但是Python 位元組碼不是機器的二進位代碼,不需要進行make的步驟。

       這也是Python代碼無法運行得像C或者C++代碼一樣快的原因,因為PVM迴圈仍然需要解釋位元組碼,並且位元組碼指令與CPU指令相比需要更多的工作。 和其他經典的解譯器不同,這裡仍有內部的編譯步驟:python 並不需要反覆地重分析和重分解每一行語句,實際的效果就是純Python 代碼的運行速度介於傳統的編譯語言和傳統的解釋語言之間。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.