トップ «前の日記(04/30/2011) 最新 次の日記(05/26/2011)» 編集

本 日 の h o g e

hogeとはワイルドカードのようなものです。日々起こった、さまざまなこと −すなわちワイルドカード− を取り上げて日記を書く、という意味で名付けたのかというとそうでもありません。適当に決めたらこんな理由が浮かんできました。

更新情報の取得には rdflirs を使ってもらえると嬉しいです.


05/24/2011 ふむ [長年日記]

tDiary 3134日目

[Py] Python っぽく書いた C コードによるモジュールを Python から使う

Python/C API を使った生の C で書いてある PyMigemoCython で書き直すとどうなるか?

結果は こんな感じ. なおこのコードは Unicode 周りを 2 系で書いてるので 3 系ではきっと動かない.Cython 自体は 3 系にも対応してるはずだけど.

所々 C っぽい定義のある Pythonic なコード. 一番最初に Cython のコードを見た時は「うわなにこれきもい」と思ったけれど,ここまで書いてみて「ああ Python で C 書いてるわ」という謎な感じに落ち着きました. いくつかの決まり事を覚えてしまいさえすれば確かにとても楽ちん.

なお Cython は Cython 用に書かれた .pyx を一旦 C のコードに変換して,その C コードを Python から import 可能な .so にコンパイルする形で動作する. つまり C のライブラリを使うわけじゃないけど高速なプログラムを Pythonic に書きたいという場合にも使える. ドキュメント を見ると "This results in a 4 times speedup over the pure Python version." などと書かれていてなかなかに扇情的である. Wikipedia には "数値計算/配列操作では、多くの場合実行速度がおおよそ100倍になる。Python の JIT コンパイラである Psyco の場合はおおよそ 4 倍である。" などと逆に疑ってしまいそうなことも書かれている. きっと高速化可能な部分とそうでない部分があるはずなので何でも速くなるぜというわけではないと思う.

あと「これはいいな」と思ったのは,Cython で作った .so は,Cython が入ってない環境でも動作するらしいということ (環境作りが面倒だったので試してはいない).Gentoo 的に言い換えれば RDEPEND に Cython は必要ないということ.実行時依存が増えないのはありがたい.

ちなみに setup.py を動かすと .so の他に変換済み C コードも残るのだけど,とてつもないコードが吐かれていたのでその辺を見てみるのはまた後日.

ところで Cython って何て読むの? サイソン? シーソン?

[戯言] つか

日記書くの久々すぎて書式忘れてた件.