Python語言編譯器與直譯器
一、解釋型語言Python
-
編譯型語言
先整體編譯,再執行
執行速度快,任意改動需重新編譯
可脫離編譯環境執行
-
解釋性語言
邊解釋,邊執行
執行速度慢
部分改動無需整體重新編譯
不可脫離直譯器環境執行
編譯型與解釋性語言列表
二、Python直譯器種類
-
CPython
官方版本的直譯器。這個直譯器是用C語言開發的,所以叫CPython。CPython是使用最廣的Python直譯器。我們通常說的、下載的、討論的、使用的都是這個直譯器。
-
Ipython
基於CPython之上的一個互動式直譯器,在互動方式上有所增強,執行Python程式碼的功能和CPython是完全一樣的。CPython用>>>作為提示符,而IPython用In [序號]:作為提示符。
-
PyPy
一個追求執行速度的Python直譯器。採用JIT技術,對Python程式碼進行動態編譯(注意,不是解釋),可以顯著提高Python程式碼的執行速度。絕大部分CPython程式碼都可以在PyPy下執行,但還是有一些不同的,這就導致相同的Python程式碼在兩種直譯器下執行可能會有不同的結果。
-
執行在Java平臺上的Python直譯器,可以直接把Python程式碼編譯成Java位元組碼執行。
-
IronPython
和Jython類似,只不過IronPython是執行在微軟.Net平臺上的Python直譯器,可以直接把Python程式碼編譯成.Net的位元組碼。
三、Python執行機制
如下圖所示
四、加快Python執行
Python指令碼在執行程式時,逐行讀取原始碼,逐行解釋,逐行執行。對於重複執行的情形,很顯然,這將耗費了大量重複性解釋工作。為了減少這一重複性的解釋工作,Python引入了pyc檔案,pyc檔案是將py檔案的解釋結果儲存下來的檔案,這樣,下次再執行的時候就不用再解釋了,直接使用pyc檔案就可以了,這無疑大大提高了程式執行速度。
- pyc注意事項:
對於當前呼叫的主程式不會生成pyc檔案;
以import xxx或from xxx import xxx等方式匯入主程式的模組才會生成pyc檔案;
每次使用pyc檔案時,都會根據pyc檔案的建立時間和源模組進行對比,如果源模組有修改,則重新建立pyc檔案,並覆蓋先前的pyc檔案,如果沒有修改,直接使用pyc檔案代替模組;
pyc檔案統一儲存在模組所在目錄的__pycache__資料夾內。
### 如下示例,生成的相關pyc檔案 [root@centos7 ~]# ls -hltr /root/project/mysite/testapp/__pycache__ total 16K -rw-r--r--. 1 root root 123 Oct 19 11:11 __init__.cpython-36.pyc -rw-r--r--. 1 root root 161 Oct 19 11:11 models.cpython-36.pyc -rw-r--r--. 1 root root 164 Oct 19 11:11 admin.cpython-36.pyc -rw-r--r--. 1 root root 338 Oct 19 11:11 views.cpython-36.pyc ###執行Python 指令碼 [root@centos7 ~]# vim hello.py print('Welcome Pyhton') [root@centos7 ~]# chmod u+x hello.py [root@centos7 ~]# python3 hello.py Welcome Pyhton