概要 ・Cythonを用いてnumpyのarrayへのアクセスを高速化する ・numpy使用時に陥りがちな罠(様々なサイトで書かれているが)をまとめておく 準備(setup.py) とりあえずsetup.pyを用いたコンパイル方法を使うにあたって、numpyのarrayを使う際に微妙に書き換える場所があるのでそれをメモ include_dirsの設定を行う必要がある
概要 ・Cythonを用いてnumpyのarrayへのアクセスを高速化する ・numpy使用時に陥りがちな罠(様々なサイトで書かれているが)をまとめておく 準備(setup.py) とりあえずsetup.pyを用いたコンパイル方法を使うにあたって、numpyのarrayを使う際に微妙に書き換える場所があるのでそれをメモ include_dirsの設定を行う必要がある
Python API¶ Python/C APIチュートリアル : http://docs.python.org/extending/index.html Python/C APIリファレンス : http://docs.python.org/c-api/index.html Python APIはPythonインストール標準のC言語APIを使用し、拡張モジュールを作成します。 #include <Python.h> static PyObject * fact(PyObject *self, PyObject *args) { int n; int i; int ret=1; if (!PyArg_ParseTuple(args, "i", &n)) return NULL; for (i=n; i>0; i--) ret *= i; return Py_BuildValue("i",
前回の記事の最後にcythonとnumpyを組み合わせても速くならなかったと書いてしまったのですが、@frontier45 さんから公式のチュートリアルをちゃんと読みましょう。と教えていただいたので、自分の勉強がてらブログにも書いておきます。 使用するコードは何のひねりもなく公式のチュートリアルから丸パクリです。 注意:以下のベンチマークはMacOS 10.7.3 MacBook Core2 Duo 2.26GHzでPythonとC/C++のコンパイラはMac標準のPython2.7.1, llvm-gccを使用しています。 Python/Cythonはipythonのtimeitを利用して実行時間を測定しています。 なお、以下の記録はあくまで私の環境、私の実装での記録なので比較の結果は正しいというものではないです。公式のチュートリアルでも実行時間が書かれていますので、そちらの方もご覧下さ
About Cython Cython is an optimising static compiler for both the Python programming language and the extended Cython programming language (based on Pyrex). It makes writing C extensions for Python as easy as Python itself. Cython gives you the combined power of Python and C to let you write Python code that calls back and forth from and to C or C++ code natively at any point. easily tune readable
lxmlのソースを読もうとしたらcythonというPythonの拡張を書くためのPythonとCの間の子みたいな言語で書かれているという事で、全く知らないままだとlxmlのソースに挑む気が起こらなかったので少し調べてみました。まぁ調べてみたといってもcythonのドキュメントの最初に書かれているGetting Startedを舐めただけなんですけども。 まずcythonをインストールします。 $ easy_install cython そして恒例のhello worldは以下になります。拡張子は.pyxを使うようです。 # hello.pyx def say_hello_to(name): print 'Hello %s' % name どう見てもPythonのコードなので楽勝なのですが、これを使えるようにsetup.pyを書かねばなりません。少しだけ面倒ですね。以下のように基本は通常のs
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く