CPython

CPython は、Pythonのリファレンス実装である。CPython は C言語で記述されている。CPython 以外に、製品としての品質をもつ Python 実装はJava で記述された Jython、共通言語ランタイム 用に記述された IronPython の2つがあり、またいくつかの実験的な実装もある。Classic Python というバクロニムが、'C' の別の意味として提案されている。

CPython はバイトコードインタプリタである。C を含むいくつかの言語での外部関数インターフェイスを持っており、Python 以外の言語の言語バインディングを明示的に書く場合に使用される。

サポートされているプラットフォーム

UNIX / Unix系 
 AIX
 BSD
 Darwin
 macOS
 FreeBSD
 HP-UX
 IRIX 5 以上
 Plan 9 from Bell Labs
 NetBSD
 Linux
 OpenBSD
 Solaris
 Tru64 UNIX
 その他の Unix

デスクトップオペレーティングシステム 
 AROS
 AtheOS
 BeOS
 Windows
 Windows NT
 OS/2
 RISC OS

特殊用途、組み込み 
 GP2X 
 iPodLinux
 ニンテンドーDS
 ニンテンドーゲームキューブ
 Nokia 770 Internet Tablet
 Nokia N800
 Nokia N810
 Palm OS 
 PlayStation 2
 PlayStation 3 (Linux)
 PSION
 QNX
 Sharp ザウルス
 Xbox/Xbmc
 VxWorks

メインフレームなど 
 OS/390
 VMS
 z/OS

かつてサポートされていたプラットフォーム 
PEP 11にはPython Software FoundationのCPythonではサポートされていないプラットフォームの一覧がある。これらのプラットフォームは現在でも非公式の移植版でサポートされている。下記参照。
 DOS (2.0以降非サポート)
 IRIX 4 (2.3以降非サポート)
 Mac OS 9 (2.4以降非サポート)
 MINIX (2.3以降非サポート)

非公式の移植版 
Python Software Foundationの公式版の CPython に統合されていない移植版が存在する。

移植版には、PSP 用のグラフィックスやサウンド API や S60 用の SMS やカメラ API などのプラットフォーム固有の機能のための拡張モジュールが提供されることが多い。

 Amiga 
 AS/400 
 DOS (DJGPPを使用) 
 PlayStation Portable 
 Symbian OS 
 Windows CE/Pocket PC

並列性に関する問題 
マルチプロセッサのコンピュータで CPython を用いる際の大きな問題は、各 CPython インタプリタのプロセスが持つグローバルインタプリタロック（GIL）であり、これがプロセス内の Python スレッドの並列性を損なってしまう。

マルチプロセッサ環境で完全な並列性を実現するためには別の CPython プロセスを動作させる必要がある。一般的にプロセス間の通信を実現することは困難な作業となるが、CPythonでは標準ライブラリを使い容易に実現させることが可能である。CPython から GIL を取り除くことについては常に議論が行われている。

バイトコード 
Pythonにおけるバイトコード（）はCPythonが内部的に利用する中間表現である。

CPythonではPythonコードをバイトコードへコンパイルし、このバイトコードをインタープリタによって実行する。コードからバイトコードへのコンパイル結果は .pyc ファイルとしてキャッシュされ、二度目以降の実行時にはリコンパイル無しにバイトコードが実行される。

バイトコードはあくまでCPythonの内部表現/実装詳細であり、CPythonのバージョン間や他Python実行環境との互換性は保証されない。

脚注

参考文献 
 

Pythonの実装
CPYTHON
オープンソースソフトウェア