初めてのPython(2章)
Pythonの実行モデルは以下のようになっている。
上のモデルはCPython(ANSI Cによる実装)のもの。
Pythonにはその他にもバリエーションがある(*1)。
(*1) Wikipedia Python
バイトコード
ソースコードと機械語の中間に位置するコードで、プラットフォームに依存しない。
ソースコードと比べて、実行速度が速い。
コードに変更が無ければ、コンパイルは1回のみで、次回以降は.pycファイルを直接読み込んで使用する。
コンパイルは対象となるソースコード全ファイルに行われるが、.pycとして保存されるのはインポートされるファイルのみ
トップレベルソースのバイトコードは保存されない(実行中はメモリ内に存在)
Jython
コンパイルするとJavaのバイトコードに変換し、JavaのVirtual Machineで実行するモデルを採用している。
CPythonと比べて実行速度や堅牢性は劣る。
Pythonのコードで書いてJavaアプリを作成することができ、Javaのフロントエンドを作るために使用される。
IronPython
実行モデルはバイトコード/実行環境が .NET 対応になったもの
.NET環境に依存するため、移植性はなくなるが、.NET Framework のライブラリなどを使える。