Python 虛擬機器

gtfaww發表於2016-10-29
Python 是⼀一種半編譯半解釋型運⾏行環境。⾸首先,它會在模組 "載⼊入" 時將原始碼編譯成位元組碼 (Byte
Code)。⽽而後,這些位元組碼會被虛擬機器在⼀一個 "巨⼤大" 的核⼼心函式⾥裡解釋執⾏行。這是導致 Python 性
能較低的重要原因,好在現在有了內建 Just-in-time ⼆二次編譯器的 PyPy 可供選擇。
當虛擬機器開始運⾏行時,它通過初始化函式完成整個運⾏行環境設定:
• 建立直譯器和主執行緒狀態物件,這是整個程式的根物件。
• 初始化內建型別。數字、列表等型別都有專⻔門的快取策略需要處理。
• 建立 __builtin__ 模組,該模組持有所有內建型別和函式。
• 建立 sys 模組,其中包含了 sys.path、modules 等重要的執行期資訊。
• 初始化 import 機制。
• 初始化內建 Exception。
• 建立 __main__ 模組,準備運⾏行所需的名字空間。
• 通過 site.py 將 site-packages 中的第三⽅方擴充套件庫新增到搜尋路徑列表。
• 執⾏行⼊入⼝口 py ⽂檔案。執⾏行前會將 __main__.__dict__ 作為名字空間傳遞進去。
• 程式執⾏行結束。
• 執⾏行清理操作,包括調⽤用退出函式,GC 清理現場,釋放所有模組等。
• 終⽌止程式。
Python 原始碼是個寶庫,其中有⼤大量的程式設計正規化和技巧可供借鑑,尤其是對記憶體的管理分配。個⼈人
建議有 C 基礎的兄弟,在閒暇時翻看⼀一⼆二。

相關文章