はじめに
本記事は、CythonというPythonライブラリを試しに動かすために必要な最低限の内容を記した備忘録です。
「Pythonを高速化する方法としてCythonてのがあるらしいけど調べても何だかよくわからん!」といった方の助けに少しでもなれば幸いです。
※ 環境:
OS:Ubuntu18.04
Python:3.6.8
Cython:0.29.13
概要
誤解を恐れずに言うと
Cython = Pythonのライブラリを作るための、Pythonにめちゃくちゃよく似た新しいプログラミング言語
です。
他にも色々な使い方がありますが、最初に試すだけであればこの程度の認識で十分かと思います。
Cythonを使うまでの流れ
1.Cython語で処理を書く
2.ソースコードをC言語に翻訳(トランスパイル)する
3.トランスパイルされたC言語のソースコードをビルドしてライブラリ化する
Hello World的な奴
早速試してみましょう。
最低限必要なものは2つ。
1.Cythonで書いたコード(hoge.pyx)
def tasu(a, b):
return a + b
Pythonにめちゃくちゃよく似てるというかPythonのまんまですね。Cythonでは他にcdef
やcpdef
などで関数を定義できたり、a
やb
の型を指定できたりしますが、試すだけなので深入りせずに行きましょう。
2.トランスパイル&ビルドするためのコード(setup.py)
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules=cythonize("hoge.pyx"))
先ほど書いたCythonコードをさいそないずするおまじないが書いてあります。
上2つが用意出来たら下記コマンドでトランスパイル&ビルドします。
python3 setup.py build_ext -i
いくつかファイルが生成されたかと思いますが、生成されたhoge.c
が、hoge.pyx
をC言語にトランスパイルされたもの。hoge.cpython-36m-x86_64-linux-gnu.so
的な奴が、Pythonからimportして使うライブラリ化されたものです。
あとはhoge.cpython-36m-x86_64-linux-gnu.so
をimportして、先ほど作った関数を呼び出すだけです。
>>> import hoge
>>>
>>> print(hoge.tasu(1,2))
Cythonは使い方や使いどころを見極めないと高速化の恩恵をあまり受けられないそうですが、試すだけなら意外と簡単ですね。
以上です。 ありがとうございました。