python虛擬機解釋器及運行過程
python虛擬機解釋器
我閑來翻了翻幾年前就買的一本python的書,O'REILLY的【python學習手冊】,中譯版,很厚。
可惜,我看得非常少,這也是為什么我在簡歷上關于python頂天也就寫個熟悉,就這都擔心找虐。雖說java的學習價值更大,但是學了平時用不上,忘得快。再加上做題的時候,感覺還是用python來得更得心應手些(廢話,別的你也不熟啊),于是我決定把書看完,記錄出以前不知道的,或者忽視掉的知識細節(jié)。
什么是python解釋器
1. 解釋性語言和編譯性語言
說到解釋器,大家之前多少都聽過解釋性語言和編譯性語言。首先,不管是這二位其中的誰,源代碼對于計算機來說,都是讀不懂的,計算機只認識二進制指令。所以,想讓程序被執(zhí)行,那么自然要先把源代碼轉化為二進制指令,也就是機器碼。
那么,在什么時候進行轉換呢?
有的語言要求必須提前把代碼一次性轉換完畢,這種就是編譯型語言,用的轉換工具就叫編譯器,比如C語言、C++。有的語言則可以一邊執(zhí)行一邊轉化,用到哪里了就轉哪里,這種就是解釋性語言,用的轉化工具叫解釋器,比如python、javascript。
java比較特殊,既有編譯又有解釋。但是編譯并沒有直接編譯成機器碼,而是編譯成字節(jié)碼,然后再拿到虛擬機中執(zhí)行。這種設計初衷是在跨平臺的同時兼顧執(zhí)行效率,這里就不展開了。
ok,上面就是鋪墊了。
2. python解釋器
python解釋器是一種讓其他程序運行起來的程序,編寫的python代碼必須在解釋器中運行,這東東已經在我們安裝python的時候都裝上了。
所以,現在我print(hello world),就可以運行了,控制臺可以看到文本的輸出。

3. python程序運行過程
上面的一行代碼雖然簡單,但是python運行它還是經過了兩步操作:
將源代碼編譯成為“字節(jié)碼”轉發(fā)“字節(jié)碼”到“虛擬機”
字節(jié)碼編譯
可以理解為翻譯,把print(hello world)翻譯成字節(jié)碼,字節(jié)碼會保存在后綴名是.pyc的文件里,這文件其實就是編譯后的.py源代碼。
這些字節(jié)碼相較于源代碼,運行起來速度要快得多。為什么?
因為在下一次運行程序時,如果在上次保存了字節(jié)碼之后沒有修改過源代碼了,Python就會加載.pyc文件并且跳過編譯這個步驟。
當必須要重新編譯時,python會自動檢查源文件和字節(jié)碼文件的時間戳,如果你又保存了源代碼,下次程序運行時,字節(jié)碼將自動重新創(chuàng)建。
python虛擬機
Python Virtual Machine,簡寫為PVM,當有字節(jié)碼文件之后,就會被發(fā)送到PVM里來執(zhí)行。
這里注意,PVM并不是指的一個獨立的程序,是不需要安裝的??梢园裀VM理解為Python的運行引擎,是一個迭代運行字節(jié)碼指令的大循環(huán),一個個的完成操作,直到結束。
從技術角度看,PVM才是“解釋器”的最后一步。

關于python的性能
大家都知道,python的缺點是運行慢。但其實這里的慢也只是相對而言,跟C和C++這類編譯性語言相比,確實執(zhí)行速度還不夠快。
為什么?
上述也提到了python會把源代碼轉成字節(jié)碼,然后再將字節(jié)碼解釋出來。但是為了更好的跨平臺性,這里的字節(jié)碼是一種跟平臺無關的格式,所以并不是底層的二進制代碼。到目前為止,只要不是對運行速度有嚴苛要求的領域,比如數值計算或動畫這種,經常需要核心處理單元至少以C語言的速度執(zhí)行,絕大多數的應用,python還是可以勝任的。
相比于缺點,python帶來開發(fā)效率的提升,相信也是很多人喜愛的的重要因素。
以上就是python虛擬機解釋器及運行過程的詳細內容,更多關于python虛擬機解釋器的資料請關注腳本之家其它相關文章!
相關文章
python中的print()函數end=' '的使用及說明
這篇文章主要介紹了python中的print()函數end=' '的使用及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
python3 實現爬取TOP500的音樂信息并存儲到mongoDB數據庫中
今天小編就為大家分享一篇python3 實現爬取TOP500的音樂信息并存儲到mongoDB數據庫中,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08
matplotlib.pyplot.matshow 矩陣可視化實例
這篇文章主要介紹了matplotlib.pyplot.matshow 矩陣可視化實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
Python辦公自動化之教你用Python批量識別發(fā)票并錄入到Excel表格中
今天來分享一篇辦公干貨文章,對于財務專業(yè)等學生或者公司財務人員來說,將報賬發(fā)票等匯總到excel簡直就是一個折磨.尤其是到年底的時候,公司的財務人員面對一大堆的發(fā)票簡直就是苦不堪言.正好我們學會了Python,我們應該將Python的優(yōu)勢發(fā)揮起來,需要的朋友可以參考下2021-06-06

