1. 過程概述
python先把**(.py檔案)編譯成位元組碼,交給位元組碼虛擬機器,然後虛擬機器一條一條執行位元組碼指令,從而完成程式的執行。
2. 位元組碼
位元組碼在python虛擬機器程式裡對應的是pycodeobject物件。
.pyc檔案是位元組碼在磁碟上的表現形式。
3. pyc檔案
pycodeobject物件的建立時機是模組載入的時候,即import。
python test.py會對test.py進行編譯成位元組碼並解釋執行,但是不會生成test.pyc。
如果test.py載入了其他模組,如import util,python會對util.py進行編譯成位元組碼,生成util.pyc,然後對位元組碼解釋執行。
如果想生成test.pyc,我們可以使用python內建模組py_compile/compileall來編譯。
載入模組時,如果同時存在.py和.pyc,python會嘗試使用.pyc,如果.pyc的編譯時間早於.py的修改時間,則重新編譯.py並更新.pyc。
4. pycodeobject
python**的編譯結果就是pycodeobject物件。
typedef struct pycodeobject;
Python程式執行原理
執行步驟大概如下 1.作業系統會讓cpu把python直譯器的程式複製到記憶體中。2.python直譯器會根據語法規則,從上向下讓cpu翻譯python中的 3.cpu負責執行翻譯完的 python直譯器有多大?拷貝到記憶體中是否會對記憶體有較大影響?1.確認直譯器所在位置 which python...
談談 Python 程式的執行原理
原先用的都是c c 對於python內部的執行機制還不是很了解,在這裡貼一篇python執行機制的文章作為參考。1 23 foo.py defadd a,b return a b 123 4567 891011 1213 1415 16 demo.py import foo a 1,python a...
Python基礎 程式執行原理
計算機中的 三大件 計算機中包含有較多的硬體,但是乙個程式要執行,有 三個 核心的硬體,分別是 cpu 記憶體 硬碟 計算機中哪乙個硬體裝置負責執行程式?記憶體 的速度快還是 硬碟 的速度快?我們的程式是安裝在記憶體中的,還是安裝在硬碟中的?我買了乙個記憶體條,有 500g 的空間!這句話對嗎?計算...