意外に簡単。Cythonのインストール・使い方覚書
CythonはPythonで書いた関数をCにコンパイルして、CエクステンションとしてPythonで利用できるというツール。コンパイルとかCエクステンションとか難しそうで敬遠していたが、やってみたら意外に簡単だ。極端な場合は100倍はやくなったりする。Pypyと違ってNumpyがすでにサポートされているし、PypyやShed Skinにくらべてほとんど使える関数に制限がないのが魅力。
(追記。Numpyをやり取りするCエクステンションのひな形も合わせて読むと吉かもしれません。)
ここを参考にインストール。Christoph Gohlkeさんのとこからバイナリインストーラーをもってくるのが一番速いけど、今回はなんとなく自分でビルドしてみた。
MinGWをインストール 最低gccとg++にチェック。
c:\mingw\binを環境変数Pathに追加。
distutilsがMinGWを使うように設定するため
[build]
compiler = mingw32
という内容でC\Python26\Lib\distutilにdistutils.cfgという名前で保存。
これでいちいちpython setup.py build --compiler==mingw32をする必要もなくなっていきなりpython setup.py installでよくなる。
Python26のところはバージョンに合わせて変えてください。
http://cython.org/release/から最新版を落とす。今回使ったのは0.14.1でした。
フツーに解凍してpython setup.py installでOK。pyximportが同梱されているのでpyxのC/C++へのコンパイルとCエクステンションの生成は自動化できる。
使い方はCythonでつくったモジュールをインポートするまえに
import pyximport
pyximport.install()
と書くだけでいい。コンパイルされたものは
C:\Users\ユーザー名\.pyxbld
のなかに出来ているはず。
うまくいかない場合、とくにXPではここにあるように
さらにpydistutils.cfgというファイルを
C:\Documents and Settings\ユーザー名\
につくってまたもや
[build]
compiler = mingw32
という内容で保存しないとだめだった。なぜかWindows 7だと必要なかったが。
完了!
テストしてみる。Robert Bradshawさんのスライドにある例をつかってみる。スライドのなかではcdef longとしていたが例にあるようにNが10の7乗とか大きいと振りきれるのでlong longにした。
def mysum(long N):
cdef long long k,s = 0
for k from 0 <= k < N:
s += k
return s
これをmycython.pyxという名前で保存。
これと同じフォルダーに
import pyximport
pyximport.install()
import mycython
N = 1e7
print mycython.mysum(N)
という内容でtest.pyとでもして記録、実行。一回目はコンパイルがはいる。
49999995000000
がでたら成功。
ちなみにすべてPythonで同じことをやるともちろん遅い。
def purepy_sum(N):
s = 0
for k in range(N):
s += k
return s
手元のパソコンでは、6-7秒かかったが、Cythonだと0.06秒で100倍早くなった。
« ウインドウズ用のPythonモデュールのインストーラーがたくさんあるサイト | トップページ | 論文中のギリシャ文字など特殊文字のインサート »
「Python」カテゴリの記事
- Juliaやってみよう。五日目。Pythonと速度比較。(2017.08.01)
- Juliaやってみよう。四日目。@timeでプロファイリング(2017.07.16)
- Juliaやってみよう。一日目。GRでプロット。(2017.07.12)
- Juliaやってみよう。三日目。MATLABコードを翻訳してみる。(2017.07.15)
- Juliaやってみよう。二日目。Juliaのアップデート、IJulia(2017.07.13)
トラックバック
この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1169291/40705535
この記事へのトラックバック一覧です: 意外に簡単。Cythonのインストール・使い方覚書:
« ウインドウズ用のPythonモデュールのインストーラーがたくさんあるサイト | トップページ | 論文中のギリシャ文字など特殊文字のインサート »
コメント