Floating Log 2012/1

2012-01-25

percall をミリ秒にする

Python の profile で実行時間をプロファイルしてみると、関数呼び出し回数や積算実行時間などはそれなりに役に立つのだが、1呼び出し当たりの時間を示す percall がほとんどの関数で 0.000 秒という表示になってしまう。 結局、回数で合計された時間を割って1呼び出し当たりの値を求める概算を暗算ですることになる。 なんという無駄。

そんなわけで percall の表示をミリ秒にしてみよう、という試みをする。 断っておくが表示をミリ秒にするフラグを profile.run その他もろもろに追加するというような正攻法ではない。 とりあえず出ればいいやという場当たり的なもの。

まず、次のスクリプトを preprofile.py として保存しておく。

from pstats import f8, func_std_string
from types import MethodType
def new_print_line(self, func):
    cc, nc, tt, ct, callers = self.stats[func]
    c = str(nc)
    if nc != cc:
        c = c + '/' + str(cc)
    print >> self.stream, c.rjust(9),
    print >> self.stream, f8(tt),
    if nc == 0:
        print >> self.stream, ' '*8,
    else:
        print >> self.stream, f8(float(tt)*1000/nc),
    print >> self.stream, f8(ct),
    if cc == 0:
        print >> self.stream, ' '*8,
    else:
        print >> self.stream, f8(float(ct)*1000/cc),
    print >> self.stream, func_std_string(func)
import pstats
pstats.Stats.print_line = MethodType(new_print_line, None, pstats.Stats)

これを profile を利用する予定の python インタプリタを起動するときに -i preprofile.py を指定して読み込ませておく。 その上で profile.run などを実行すると、出力の percall の欄が 1000 倍されて(単位が秒からミリ秒に1/1000になって)表示される。 という具合。

preprofile.py の中身を解説しておくと、表示に使われている pstats.Stats.print_line メソッドを抜き出して percall 欄の値を 1000 倍にしただけの new_print_line という関数を定義し、types .MethodType を利用してこの関数をメソッド化して、それで pstats.Stats.print_line を書き換える、ということをしている。

MethodType の使い方は Pythonでメソッドをクラスまたはインスタンスに動的に追加する というブログを参考にした。

posted at 22:17:52
 
2012-01-20

計算機と脳

J.フォン・ノイマン「計算機と脳」ちくま学芸文庫(2011)。 最初に計算機の話をします。 次に脳の話をします。 未完です。 ということで何だと思って読めば良いのか良く判らない。 天才の死の間際の思索の断片だから何かを汲み取れというところかなあ。

posted at 23:51:44
 
2012-01-17

低炭素社会

小宮山宏「低炭素社会」幻冬舎新書(2010)。 窓を二重にしてエコキュート/エネファームを導入して家庭のエネルギー効率を上げようってことだ。

posted at 23:32:32
 
2012-01-15

量子の海、ディラックの深淵

グレアム・ファーメロ「量子の海、ディラックの深淵」早川書房(2010)。 P.A.M.ディラックの伝記。 ただただ分厚い。 個人的なことを書くと、学部時代に授業を受けた教授がフロリダでのディラックの教え子だったと聞いたことがありその「フロリダ」と「ディラック」という取り合わせが妙に印象に残っていたのがこの本を手に取ったきっかけだったと言っても良いかもしれない。 家族関係や交遊関係を丹念に描かれているのだが、自分がそれをどこまで知りたくて読み始めたかと考えると、間違って大盛りの食事を注文してしまったがごとき感覚ではある。

posted at 14:02:56
 
2012-01-12

コンピュータによる結び目理論入門

落合豊行/山田修司/豊田英美子「コンピュータによる結び目理論入門」牧野書店(星雲社)(1996)。 グラフのことを最近考えているので、ちょっと隣接分野の本を。 「コンピュータによる」という部分は補遺に C++ のプログラムが印刷されているというところなんだけど、それはあまり役に立たない。 全体的に荒削りな印象(説明がラフだったり、図と文が合ってなかったり)が強い。 おそらくもう一冊教科書的な本を別に用意して読むべきなのだろう。

ところでこの本でもまた「符号」を「符合」と書く誤字に遭遇した。 この一月ばかりの間に3箇所の別々なところで同じ間違いに遭遇していて、もういっそ情報系・数物系の人は「符合」を漢字変換の辞書から追放すべきなのではないかという気がしてくる。

posted at 23:26:08
 
2012-01-08

気候変動とエネルギー問題

深井有「気候変動とエネルギー問題」中公新書(2011)。 温暖化問題については二酸化炭素説に反対の立場で、スヴェンスマークを中心に太陽活動の影響を主と見ている。 だいたい(懐疑派の本を何冊か読んでいれば)どこかで見たような説の紹介なのだが、太陽系の他の惑星でも最近温暖化が進んでいる、という知見の紹介はなかなか興味深い。 後半はエネルギーを将来的にどのように確保するのか、という話題に移り、特に紙幅を割いているのは核融合についてでトカマク型の将来を悲観的に見て、国内では唯一阪大で進められているレーザーを使った慣性核融合にもっと資源をつぎ込むべきだという論調。 他にやけに水素燃料を好意的に取り上げると思ったら著者がかつてその方面に関わっていたことが後書きに書かれている。

posted at 18:06:08
 
2012-01-02

Amazon アソシエイト 2011

今年も例によって「クリック数」であって「売り上げ」とは関係ないランキング。 去年と比べると数そのものが激減している。 去年までの方が人以外のクローラーとかの分が入っていた感じなのかもしれない。

書名クリック数
日本辺境論 (新潮新書)23
群論の味わい -置換群で解き明かすルービックキューブと15パズル-19
ゲーデル 不完全性定理 (岩波文庫)16
不完全性定理―数学的体系のあゆみ (ちくま学芸文庫)15
計算論 計算可能性とラムダ計算 (コンピュータサイエンス大学講座)14
ネコの毛並み―毛色多型と分布 (ポピュラー・サイエンス)12
帰納的関数 (共立講座 現代の数学)12
三毛猫の遺伝学11
πの話 (岩波科学の本 12)11
成功する自転車まちづくり―政策と計画のポイント10
プログラミングコンテストチャレンジブック10
スケッチブック(7) (ブレイドコミックス)10

今までと同様、このリストは書籍限定。 その他のものも含めたリストはアソシエイトストアの 2011 を見て下さい。 最後は比較したい人のために去年までの分へのリンク:

posted at 16:45:04
 
2012-01-01

世界征服のすゝめ

火浦功「世界征服のすゝめ」朝日ノベルズ(2009)。 正月休みということで、積んでいたみのりちゃんシリーズをまとめたノベルズを読む。 もちろん、かつてハヤカワ文庫で出ていた「日曜日には宇宙人とお茶を」「大冒険はおべんと持って」は読んでいるわけだが、改めて読み返すといかに自分が影響されていたかが判る。

posted at 23:43:12
1月 2012
1 2 3 4 5 6 7
8 91011121314
15161718192021
22232425262728
293031    
12月
2011
 2月
2012

浮遊する思考・浮遊する言葉を拾い集めて記録しておくページ。

Python
Desktop
Server

© 2012-2013, Matsui Fe2+ Tetsushi