python解釋器的主要作用是將我們在.py文件中寫好的代碼交給機(jī)器去執(zhí)行,比較常見的解釋器包括如下幾種:
CPython:官方解釋器,我們從官網(wǎng)下載安裝后獲得的就是這個解釋器,它使用C語言開發(fā),是使用范圍最廣泛的Python解釋器。
Jython:由Java編寫,它可以將Python代碼編譯成Java字節(jié)碼,再由JVM執(zhí)行對應(yīng)的字節(jié)碼。
IronPython:與Jython類似,它由C#編寫,是運行在.Net平臺上的解釋器。
IPython:基于CPython的一個交互式解釋器,它主要增強(qiáng)了CPython的交互方式。
PyPy:采用了JIT技術(shù),它是一個關(guān)注執(zhí)行速度的Python解釋器,該解釋器可以明顯提升Python代碼的執(zhí)行速度。
GIL
GIL全稱globalinterpreterlock,中文譯為全局解釋器鎖,CPython解釋器就是通過GIL機(jī)制來確保同一時刻只有一個線程執(zhí)行Python代碼的,這樣做十分方便的幫助CPython解決了并發(fā)訪問的線程安全問題,但卻犧牲了在多處理器上的并行性,所以CPython解釋器下的多線程并不是真正意義上的多線程。
我們可能會有一個疑問:既然CPython解釋器使用GIL機(jī)制犧牲了多線程的并行性,那么把GIL去掉換用其他方式實現(xiàn)不行嗎?在說這個問題之前,我們先簡單了解一下基本情況:最初因GIL可以簡單、快捷的解決多線程并發(fā)訪問的安全問題選擇了這種機(jī)制,隨后又有大量的代碼庫開發(fā)者開始依賴這種特性,隨之時間的推移,人們開始意識到了并行性的問題,但這時已經(jīng)到了尾大不掉的程度了,所以現(xiàn)實情況是:盡管可以去掉GIL,但工程量太大了。
以上內(nèi)容為大家介紹了Python解釋器的作用,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。