CPython

Pythonのリファレンス実装 From Wikipedia, the free encyclopedia

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

開発元 Python Software Foundation
初版 1991年4月 (34年前) (1991-04)
最新版
3.13.3 / 2025年4月8日 (10か月前) (2025-04-08)
概要 作者, 開発元 ...
CPython
作者 グイド・ヴァンロッサム
開発元 Python Software Foundation
初版 1991年4月 (34年前) (1991-04)
最新版
3.13.3 / 2025年4月8日 (10か月前) (2025-04-08)
最新評価版
3.14.0a7 / 2025年4月8日 (10か月前) (2025-04-08)
リポジトリ ウィキデータを編集
プログラミング
言語
C言語
プラットフォーム 42のプラットフォーム 本文参照
種別 Python Programming Language Interpreter
ライセンス Python Software Foundation License
公式サイト www.python.org ウィキデータを編集
テンプレートを表示
閉じる

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

機能

拡張モジュール

CPython における拡張モジュールかくちょうモジュール: extension moduleは Python インタプリタに組み込みオブジェクト・Cライブラリコール・システムコールを追加する機能である[1]

拡張モジュールは Python 言語の仕様ではなく CPython ランタイムの仕様であるため、拡張モジュールは他のランタイムでは一般に機能しない[2]

Cython は拡張モジュールを活用している代表的なコンパイラである[3]

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

UNIX / Unix系

デスクトップオペレーティングシステム

特殊用途、組み込み

メインフレームなど

かつてサポートされていたプラットフォーム

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 などのプラットフォーム固有の機能のための拡張モジュールが提供されることが多い。

並列性に関する問題

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

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

バイトコード

Pythonにおけるバイトコード: bytecode)はCPythonが内部的に利用する中間表現である[7]

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

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

脚注

参考文献

関連項目

Related Articles

Wikiwand AI