210425 Cython 久しぶりに研究者としてのログイン

April 2021 · 2 minute read

こんにちは。RockinWoolです。
最終登校日からおよそ10ヵ月も空いてしまいました。その間、コロナ禍やテレワークなどいろいろ出来事がありましたね。RockinWoolとしては激動の1年でした。最近は仕事で気持ちが浮き沈みすることも少なくなってきたかな・・・と過去の記事を見て思います。とはいえ他の人よりもどうしても激烈苛烈になりがち。

さて、今回は久しぶりのCython練習編という感じです。いつも「Pythonを高速化したいなあ」⇒「せや!Cython使ったろ!」ってなって、しばらく使ううちに忘れるパターンが多い言語です。この際ブログに残していつでも参照できるようにしておこ。
明日はAWS(EC2)+VSCodeの環境を作って遊ぶぞー(予告) \

最初にやることは普通のpython関数を作成することである。今回は以下のような関数を記述した。

def Hello_World():
    print('Hello_World')

Cythonプログラム拡張子であるhelloworld.pyxに変更する

Cythonプログラムをコンパイルするための設定プログラムを作成して実行する。以下のプログラムを作成&実行すれば良い。ただしWin&Anaconda環境でやっているため、Linuxではコンパイラが異なる点に注意。

from distutils.core import setup
from Cython.Build import cythonize

setup(
    ext_modules = cythonize("helloworld.pyx")
)
python setup.py build_ext --inplace --compiler=msvc

ここまでの動作でコンパイルは完了しているため、あとは呼び出して使うだけである。

import helloworld as h

if __name__ == "__main__":
    h.Hello_World()
python main.py