2
5

More than 3 years have passed since last update.

最短で試すCython

Last updated at Posted at 2019-11-01

はじめに

本記事は、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)

hoge.pyx
def tasu(a, b):
    return a + b

Pythonにめちゃくちゃよく似てるというかPythonのまんまですね。Cythonでは他にcdefcpdefなどで関数を定義できたり、abの型を指定できたりしますが、試すだけなので深入りせずに行きましょう。

2.トランスパイル&ビルドするためのコード(setup.py)

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は使い方や使いどころを見極めないと高速化の恩恵をあまり受けられないそうですが、試すだけなら意外と簡単ですね。



以上です。
ありがとうございました。

2
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5