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