サイトンへようこそ!
Cython は、Python 自体と同じくらい簡単に Python 用の C 拡張機能を作成できる Python コンパイラーです。 Cython は Pyrex をベースとしていますが、より最先端の機能と最適化をサポートしています。
Cython は Python コードを C/C++ コードに変換しますが、さらに C 関数の呼び出しと、変数およびクラス属性での C 型の宣言をサポートします。これにより、コンパイラーは Cython コードから非常に効率的な C コードを生成できます。
このため、Cython は、外部 C ライブラリをラップしたり、Python コードの実行を高速化する高速 C モジュールに最適な言語になります。
- 公式サイト:https://cython.org/
- ドキュメント: https://docs.cython.org/
- Github リポジトリ: https://github.com/cython/cython
- ウィキ: https://github.com/cython/cython/wiki
Cython の PyPI では月間約 3,000 万ダウンロードがあります。 Cython プロジェクトは、Github スポンサーまたは Tidelift を通じてサポートできます。
インストール:
すでに C コンパイラをお持ちの場合は、次のコマンドを実行するだけです。
pip インストール Cython
それ以外の場合は、インストールのページを参照してください。
ライセンス:
オリジナルの Pyrex プログラムは「制限なし」でライセンスされていました (下記を参照)。 Cython 自体は、寛容なApache Licenseに基づいてライセンスされています。
LICENSE.txtを参照してください。
貢献:
Cython プロジェクトに貢献したいですか?ここでは、作業を開始するためのヒントをいくつか紹介します。
他の Python コンパイラとの違い
2000 年代初頭にプロジェクトとして開始された Cython は、Python 言語用の静的コンパイラーを作成する他のほとんどの試みを乗り越えて存続しました。
現在関連性のある同様のプロジェクトには次のものがあります。
- PyPy、JIT コンパイラーを使用した Python 実装。
- 長所: ランタイム最適化による JIT コンパイル、完全な言語準拠、外部 C/C++ コードとの良好な統合
- 短所: 非 CPython ランタイム、ランタイムの比較的大量のリソース使用量、CPython 拡張機能との限定された互換性、明らかでないパフォーマンス結果
- Numba は、LLVM コンパイラ インフラストラクチャ (おそらく
clang
C コンパイラで最もよく知られています) に基づいた、言語のサブセット用の JIT コンパイラを備えた Python 拡張機能です。主に、NumPy を使用する数値コードを対象としています。- 長所: 実行時の最適化による JIT コンパイル
- 短所: 限定された言語サポート、比較的大きなランタイム依存関係 (LLVM)、明らかではないパフォーマンス結果
- Pythran は、言語のサブセット用の静的な Python から C++ への拡張コンパイラーであり、主に数値計算を対象としています。 Python は、Cython の NumPy コードの追加バックエンドとして使用できます (おそらく最適です)。
- mypyc は、mypy 静的 Python アナライザーに基づく静的 Python-to-C 拡張コンパイラーです。 Cython の純粋な Python モードと同様に、mypyc は PEP-484 型アノテーションを利用して、静的型のコードを最適化できます。
- 長所: 言語と PEP-484 タイピングの優れたサポート、優れた型推論、適度なパフォーマンスの向上
- 短所: 低レベルの最適化と型指定がサポートされていない、独断的な Python 型解釈、コンパイル後の Python 互換性とイントロスペクションの低下
- Nuitka、静的な Python から C への拡張コンパイラー。
- 長所: 言語への高度な準拠、適度なパフォーマンスの向上、静的アプリケーション リンクのサポート (cython_freeze に似ていますが、ライブラリの依存関係を自己完結型の実行可能ファイルにバンドルする機能があります)
- 短所: 低レベルの最適化と型指定はサポートされていません
上記と比較して、Cython は次のことを提供します。
- 動的機能やイントロスペクションを含む、ほぼすべての Python 言語機能に対する高速かつ効率的で準拠性の高いサポート
- 現在使用されているすべてのバージョンおよび将来のバージョンの CPython との完全なランタイム互換性
- 「一度生成すれば、どこでもコンパイルできる」C コード生成により、再現可能なパフォーマンス結果とテストが可能になります。
- ターゲット プラットフォームと Python バージョンに合わせた C コンパイル時間の調整
- PyPy や Pyston などの他の C-API 実装のサポート
- C/C++ コードとのシームレスな統合
- 手動による最適化と C レベルまでのチューニングを幅広くサポート
- 何千ものライブラリ、パッケージ、ツールを備えた大規模なユーザーベース
- 約 20 年にわたるバグ修正と静的コードの最適化
完全なソース履歴を取得します。
Cython は以前はソース配布に完全なバージョン管理リポジトリを同梱していましたが、スペースの制約により現在は同梱していません。ダウンロードしたソース アーカイブから完全なソース履歴を取得するには、git がインストールされていることを確認してから、Cython ソース ディストリビューションのベース ディレクトリに移動し、次のように入力します。
リポジトリを作成する
以下はパイレックス社からのものです。
これは、Python 拡張モジュールを作成するための言語である Pyrex の開発バージョンです。
詳細については、以下をご覧ください。
- 言語の説明については、Doc/About.html
- インストール手順については INSTALL.txt
- 使用方法については USAGE.txt
- 使用例のデモ
コメント、提案、バグレポートなどは大歓迎です。
著作権関連: Pyrex には制限がありません。あなたは、使用、再配布、変更、および変更されたバージョンを配布することができます。
Pyrex の最新バージョンはここにあります。
Greg Ewing、コンピュータ サイエンス部門
カンタベリー大学
クライストチャーチ、ニュージーランド
USA Inc. の完全子会社である NewZealandCorp の国民であること。