您好,登錄后才能下訂單哦!
今天小編給大家分享一下python虛擬機(jī)解釋器及運(yùn)行過(guò)程是什么的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。
說(shuō)到解釋器,大家之前多少都聽(tīng)過(guò)解釋性語(yǔ)言和編譯性語(yǔ)言。首先,不管是這二位其中的誰(shuí),源代碼對(duì)于計(jì)算機(jī)來(lái)說(shuō),都是讀不懂的,計(jì)算機(jī)只認(rèn)識(shí)二進(jìn)制指令。所以,想讓程序被執(zhí)行,那么自然要先把源代碼轉(zhuǎn)化為二進(jìn)制指令,也就是機(jī)器碼。
那么,在什么時(shí)候進(jìn)行轉(zhuǎn)換呢?
有的語(yǔ)言要求必須提前把代碼一次性轉(zhuǎn)換完畢,這種就是編譯型語(yǔ)言,用的轉(zhuǎn)換工具就叫編譯器,比如C語(yǔ)言、C++。有的語(yǔ)言則可以一邊執(zhí)行一邊轉(zhuǎn)化,用到哪里了就轉(zhuǎn)哪里,這種就是解釋性語(yǔ)言,用的轉(zhuǎn)化工具叫解釋器,比如python、javascript。
java比較特殊,既有編譯又有解釋。但是編譯并沒(méi)有直接編譯成機(jī)器碼,而是編譯成字節(jié)碼,然后再拿到虛擬機(jī)中執(zhí)行。這種設(shè)計(jì)初衷是在跨平臺(tái)的同時(shí)兼顧執(zhí)行效率,這里就不展開(kāi)了。
ok,上面就是鋪墊了。
python解釋器是一種讓其他程序運(yùn)行起來(lái)的程序,編寫(xiě)的python代碼必須在解釋器中運(yùn)行,這東東已經(jīng)在我們安裝python的時(shí)候都裝上了。
所以,現(xiàn)在我print(hello world)
,就可以運(yùn)行了,控制臺(tái)可以看到文本的輸出。
上面的一行代碼雖然簡(jiǎn)單,但是python運(yùn)行它還是經(jīng)過(guò)了兩步操作:
將源代碼編譯成為“字節(jié)碼”轉(zhuǎn)發(fā)“字節(jié)碼”到“虛擬機(jī)”
字節(jié)碼編譯
可以理解為翻譯,把print(hello world)
翻譯成字節(jié)碼,字節(jié)碼會(huì)保存在后綴名是.pyc
的文件里,這文件其實(shí)就是編譯后的.py
源代碼。
這些字節(jié)碼相較于源代碼,運(yùn)行起來(lái)速度要快得多。為什么?
因?yàn)樵谙乱淮芜\(yùn)行程序時(shí),如果在上次保存了字節(jié)碼之后沒(méi)有修改過(guò)源代碼了,Python就會(huì)加載.pyc
文件并且跳過(guò)編譯這個(gè)步驟。
當(dāng)必須要重新編譯時(shí),python會(huì)自動(dòng)檢查源文件和字節(jié)碼文件的時(shí)間戳,如果你又保存了源代碼,下次程序運(yùn)行時(shí),字節(jié)碼將自動(dòng)重新創(chuàng)建。
Python Virtual Machine,簡(jiǎn)寫(xiě)為PVM,當(dāng)有字節(jié)碼文件之后,就會(huì)被發(fā)送到PVM里來(lái)執(zhí)行。
這里注意,PVM并不是指的一個(gè)獨(dú)立的程序,是不需要安裝的。可以把PVM理解為Python的運(yùn)行引擎,是一個(gè)迭代運(yùn)行字節(jié)碼指令的大循環(huán),一個(gè)個(gè)的完成操作,直到結(jié)束。
從技術(shù)角度看,PVM才是“解釋器”的最后一步。
大家都知道,python的缺點(diǎn)是運(yùn)行慢。但其實(shí)這里的慢也只是相對(duì)而言,跟C和C++這類編譯性語(yǔ)言相比,確實(shí)執(zhí)行速度還不夠快。
為什么?
上述也提到了python會(huì)把源代碼轉(zhuǎn)成字節(jié)碼,然后再將字節(jié)碼解釋出來(lái)。但是為了更好的跨平臺(tái)性,這里的字節(jié)碼是一種跟平臺(tái)無(wú)關(guān)的格式,所以并不是底層的二進(jìn)制代碼。到目前為止,只要不是對(duì)運(yùn)行速度有嚴(yán)苛要求的領(lǐng)域,比如數(shù)值計(jì)算或動(dòng)畫(huà)這種,經(jīng)常需要核心處理單元至少以C語(yǔ)言的速度執(zhí)行,絕大多數(shù)的應(yīng)用,python還是可以勝任的。
相比于缺點(diǎn),python帶來(lái)開(kāi)發(fā)效率的提升,相信也是很多人喜愛(ài)的的重要因素。
以上就是“python虛擬機(jī)解釋器及運(yùn)行過(guò)程是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。