第一部分 Python如何運行

來源:互聯網
上載者:User

標籤:

Python如何運行程式

 Python運行指令碼時,第一步是編譯成所謂的“位元組碼”,之後將其轉寄到“虛擬機器”中。

1、位元組碼編譯:

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

如果Python進程在機器上擁有寫入許可權,那麼它將把程式的位元組碼儲存到一個以.pyc為副檔名的檔案(“.pyc就是編譯過的“.py”原始碼)。Python儲存位元組碼是作為一種啟動速度的最佳化。下一次運行程式時,如果你在上次儲存位元組碼之後沒有修改過原始碼的話,Python將會載入,pyc檔案並跳過編譯這個步驟。當Python必須重編譯時間,它會自動檢查源檔案和位元組碼檔案的時間戳記:如果你又儲存了原始碼,下次程式運行時,位元組碼將自動重新建立。

如果Python無法在機器上寫入位元組碼,程式仍然可以工作:位元組碼將會在記憶體中產生並在程式結束時簡單地丟棄。

2、Python虛擬機器(PVM)

一旦程式編譯成位元組碼(或位元組碼從已存在的.pyc檔案中載入),之後的位元組碼發送到通常稱為Python虛擬機器(Python Virtual Machine, PVM)上來執行。PVM不是一個獨立的程式,不需要安裝。事實上,PVM是迭代運行位元組碼指令的一個大迴圈,一個接一個地完成操作。PVM是Python的運行引擎,它時常表現為Python系統的一部分,並且它是實際運行指令碼的組件。從技術上講,它才是所謂“Python解譯器”的最後一步。

圖2-2描述介紹的運行時的結構。這些複雜性是有意對Python程式員隱藏起來的。位元組碼的編譯是自動完成的,而且PVM也僅僅是安裝在機器上的Python系統的一部分。程式員只需簡單的編寫代碼並運行包括有語句的檔案。

注意:

(1)效能的含義

Pyhton與C和C++等完全編譯語言相比不同之處:

a.Python的工作中沒有“build”或“make”的步驟,代碼在寫好後立即運行;

b.Python位元組碼不是機器的二進位編碼(例如,Intel晶片的指令)。

Python代碼無法運行像C或C++代碼一樣快,原因是PVM迴圈(而不是CPU晶片)仍然需要解釋位元組碼,並且位元組碼指令與CPU指令相比需要更多的工作。

純Python代碼的運行速度比傳統解釋語言快,原因是和其他經典的解譯器不同,這裡仍有內部的編譯步驟:Python並不需要反覆地重分析和重分解每一行語句。

(2)開發的含義

Python執行模組的另一個情況是其開發和執行的環境實際上並沒有區別。在Python中,編譯器總是在運行時出現,並且是運行程式系統的一部分。

在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.