3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VirtualBox 上のUbuntuでCythonを試してみた

Last updated at Posted at 2015-07-17

VirtualBox 上のUbuntuでCythonを試してみた。

$ sudo apt-get install cython

$ cython -V
でバージョンの表示を確認する。

「Cython Cとの融合によるPythonの高速化」p3にあるCython版のフィボナッチ関数を
fib.pyxとして保存する。

fib.pyx
# -*- coding: utf-8 -*-
def fib(n):
    cdef int i
    cdef double a=0.0, b = 1.0
    for i in range(n):
        a, b = a + b, a
    return a

「Cython Cとの融合によるPythonの高速化」p15にあるsetup.pyをfib.pyxと同じディレクトリに置く。

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

setup(ext_modules=cythonize('fib.pyx'))

$ python setup.py build_ext --inplace
を実行する。

Spyder統合環境でIPythonのコンソールを起動する。

in [1]: import fib

in [2]: fib.fib(1)
Out[2]: 1.0

in [3]:fib.fib(90)
Out[3]: 2.880067194370816e+18

in [4]: %timeit fib.fib(90)
10000000 loops, best of 3: 137 ns per loop

in [5]: import fib0

in [6]: %timeit fib0.fib(90)
100000 loops, best of 3: 4.78 µs per loop

この例では、CPU バウンドになっていることが、処理速度の大幅な向上につながっている。
各人の抱えている課題の中で、何がボトルネックになるかを調べて、Cythonを使う・使わない、別の手法を使うことを考えてみるのがよさそうである。

参考資料:
「Cython Cとの融合によるPythonの高速化」オライリー・ジャパン

追記:
以下のサイトにはRaspberryPiでCythonを動作させた手順が書いてあります。
「電子工作チュートリアル」1 Cythonをダウンロード
http://lumenbolk.com/?p=1054

付記:
scikit-learnやscikit-imageをソースコードからビルドしなくてはならないときもCythonを自覚することなくビルドの一部として実行することになるでしょう。まあ、そのような必要に迫られことはふつうないでしょう。たいがいの場合、pip installですむはずですから。

3
3
0

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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?