2012-04-01から1ヶ月間の記事一覧

Python版mechanizeの関わるテスト

テスト始めました 最近, テストをちゃんと開発工程に入れようとし始めました. まだ手探り状態なんですけど. とりあえず, nosetestsを利用してテストを行おうと思っています参考になったページは Nose利用ノート 公式ドキュメント pdb-failuresオプションは使…

PEP342と343を読んだ

初めてちゃんと英語のPEP(Python Enhancement Proposals)を読んだ. Proposalだったら現在の仕様と違うんじゃないの? とか思ったけど, そのProposalのステータス(議論中・実装済み)とかがちゃんとトップに書いてあった. PEP342 generatorの拡張仕様. それ…

Cにおける加算と除算のコストの比較

C++

後輩とCの加算・除算のコスト差について意見が食い違ったので, 実際にプログラムを書いて比較してみた. マシンスペックはIntel® Core™2 Duo CPU T9300 @ 2.50GHz × 2 Ubuntu11.10 64bit. コンパイラはgccバージョン4.6.1, またコンパイルオプションは常に-O0…

PyGTKに関するメモ

PyGTKを勉強中. 一つのイベントに複数のcall_backを結び付けられる call_backが呼ばれる順は結び付けれられた順 connectの返り値はidでそれを使うとunconnect出来る

Google or-toolsをインストールする

Googleが出している制約最適化ライブラリor-toolsをインストールします. 今回はPythonからの利用に絞っています. 環境はUbuntu 11.10 64bitです. 基本的には, 公式のGetting startedに従います. sudo apt-get install bison flex python-setuptools python-d…

scipy/numpyのBoost.Pythonによる高速化

Boost.PythonとPyUblasに関して, 今まで適当に書いていた日記をまとめたもの. 詳細は過去の日記へのリンクをあちこちに貼ってある. 前書き Pythonは言わずと知れた非常に遅い言語だ. Pythonで大きなループを含む処理を書くことは即ち死を意味する. 例えば手…

PyUblasとBoost.Pythonを使ったDTWの実装

PyUblasを試すために, 今回は距離関数の一つであるDTW(Dynamic Time Warping)を実装する. DTWの説明は余所で読んでもらうとして, まあ2つの長さが異なるベクトルx,y の距離をO(|x|×|y|)で計算するアルゴリズムだと思ってもらえばいい. 今回はパフォーマンス…

Boost.Pythonでtupleとlistの返し方

こう namespace py = boost::python; py::list test() { py::list l; l.insert(0,1); l.insert(0,make_tuple(2,3)); return l; }参考ページ: Boost.Python.list

PyUblas を使う

PyUblasはBoost.PythonとNumpyの間のデータ受け渡しをサポートする素敵ライブラリーだ. かなり便利. インストール方法は, 公式ドキュメントを参照. ただ, インストール過程で何箇所か戸惑う所があった. まず, コンパイルエラーが出たことと(const変数から非c…

Boost.PythonとNumPy Array (C API編)

Boost.PythonでNumPyのarrayを受け取る手段として, NumPyが提供するCのAPIを使うという手がある. 使いづらいが機能的には完全であることと, CとPythonを協調して使う際の知見となるため, 記録を残しておく.基本的な使い方はこちらのページを見ればわかる. Bo…

Boost.Pythonの使い方とNumpy/Scipy arrayの渡し方

scipyで書いたプログラムでも一部が遅くてそこをC++で実装したいというシナリオはよくある. それには色々な手段があるというのは以前の日記でも紹介した通り. 今回はBoost.Pythonでscipy/numpyのarray(ndarray)を取り扱う方法を説明する. 基本的な使い方はbo…