Cython のインストールと使用体験を共有する

Y2J
リリース: 2017-04-17 17:05:47
オリジナル
4786 人が閲覧しました

1. Cython とは何ですか?

Python(拡張子モジュール)を高速に生成するために使用される拡張モジュールです。このツール

の構文は、Python 言語の構文とC 言語文法を組み合わせたものです

swig よりも Python 拡張モジュールを記述する方が簡単です

おそらく、swig は C ヘッダー ファイルを通じて直接拡張モジュールを生成できると言うかもしれませんが、 swig のコールバック関数のサポートはあまり良くありません。

さらに、swig を使用する場合、多くの場合、入力パラメーターを Pythonオブジェクト に変換し、出力を Python オブジェクトに変換する追加のコードを記述する必要があります。たとえば、カプセル化された C 関数のパラメータが入出力である場合、または C 関数のパラメータにコールバック関数がある場合、Cython では、C の型 (int、float、long、char* など)など、必要に応じてオブジェクトをPythonオブジェクトに変換したり、PythonオブジェクトからC型に変換したりするときに、変換に失敗すると例外がスローされます。さらに、Cython はコールバック関数も適切にサポートしています

つまり、Python 拡張モジュールを作成する必要がある場合、Cython は本当に優れたツールです 次に、linux

インストールの下に cython

cython をインストールします。

:

1. ソースパッケージのインストール :

[blueelwang@pythontab ~]$ wget https://pypi.python.org/packages/b7/67/7e2a817f9e9c773ee3995c1e15204f5d01c8da71882016cac10342ef031b/Cython-0.25.2.tar.gz
[blueelwang@pythontab ~]$ tar xzvf Cython-0.25.2.tar.gz
[blueelwang@pythontab ~]$ cd Cython-0.25.2
[blueelwang@pythontab ~]$ python setup.py install
ログイン後にコピー

2. pip パッケージのインストール

インストール後、cython を入力してインストールが成功したかどうかを確認します3. .pyx 拡張子を持つ cython プログラムを作成します。 hello.pyx

[blueelwang@pythontab ~]$ sudo apt-get install cython
ログイン後にコピー

2. Python プログラム setup.py を作成します

目的は、hello.pyx プログラムを hello.c に変換し、so ファイルにコンパイルすることです

def say_hello_to(name):
    print("Hello %s!" % name)
ログイン後にコピー

3. Python プログラムを実行します

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
ext_modules = [Extension("hello", ["hello.pyx"])]
setup(
  name = 'Hello world app',
  cmdclass = {'build_ext': build_ext},
  ext_modules = ext_modules
)
ログイン後にコピー

実行結果は次のようになります: hello.c と hello.so (Py

Object

* でカプセル化されたファイル)

4. Python を使用して hello.so を呼び出します。呼び出しファイルは test.py

[blueelwang@pythontab ~]$ python setup.py build_ext --inplace
ログイン後にコピー

cython です。 主な目的は、Python が C 言語プログラムを呼び出す面倒なカプセル化プロセスを簡素化し、Python コードの実行速度を向上させることです (C 言語の実行速度は Python よりも高速です)。

以上がCython のインストールと使用体験を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!