Python 程序 运行过程
?
一. ?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 代碼的運行速度介于傳統的編譯語言和傳統的解釋語言之間。
?
?
?
?
?
?
整理自網絡
------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
網上資源: http://tianlesoftware.download.csdn.net
相關視頻:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
DBA1 群:62697716(滿); DBA2 群:62697977(滿)
DBA3 群:62697850?? DBA 超級群:63306533;????
聊天 群:40132017
--加群需要在備注說明Oracle表空間和數據文件的關系,否則拒絕申請
轉載于:https://www.cnblogs.com/zlja/archive/2011/01/30/2449718.html
總結
以上是生活随笔為你收集整理的Python 程序 运行过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 爱迪德CA系统与NDS CA系统对比分析
- 下一篇: OpenCL快速入门