python 運(yùn)行環(huán)境
Python 是一種半編譯半解釋型運(yùn)行環(huán)境。首先,它會(huì)在模塊 "載入" 時(shí)將源碼編譯成字節(jié)碼 (Byte
Code)。而后,這些字節(jié)碼會(huì)被虛擬機(jī)在一個(gè) "巨大" 的核心函數(shù)里解釋執(zhí)行。這是導(dǎo)致 Python 性
能較低的重要原因,好在現(xiàn)在有了內(nèi)置 Just-in-time 二次編譯器的 PyPy 可供選擇。
當(dāng)虛擬機(jī)開始運(yùn)行時(shí),它通過初始化函數(shù)完成整個(gè)運(yùn)行環(huán)境設(shè)置:
- 創(chuàng)建解釋器和主線程狀態(tài)對(duì)象,這是整個(gè)進(jìn)程的根對(duì)象。
- 初始化內(nèi)置類型。數(shù)字、列表等類型都有專門的緩存策略需要處理。
- 創(chuàng)建 __builtin__ 模塊,該模塊持有所有內(nèi)置類型和函數(shù)。
- 創(chuàng)建 sys 模塊,其中包含了 sys.path、modules 等重要的運(yùn)?期信息。
- 初始化 import 機(jī)制。
- 初始化內(nèi)置 Exception。
- 創(chuàng)建 __main__ 模塊,準(zhǔn)備運(yùn)行所需的名字空間。
- 通過 site.py 將 site-packages 中的第三方擴(kuò)展庫添加到搜索路徑列表。
- 執(zhí)行入口py 文件。執(zhí)行前會(huì)將 __main__.__dict__ 作為名字空間傳遞進(jìn)去。
- 程序執(zhí)行結(jié)束。
- 執(zhí)行清理操作,包括調(diào)用退出函數(shù),GC 清理現(xiàn)場(chǎng),釋放所有模塊等。
- 終止進(jìn)程。

浙公網(wǎng)安備 33010602011771號(hào)