おまぬけ活動日誌

最近のツッコまれどころ

この日誌から Google してもらう


2005年03月31日(Thu) 萌え萌えRubi [長年日記]

っていうかまだ3月なんですけど。

[memo] Pythonのlist#unshift

list.pop(0)となー。

全部消えました

python setup.py clean --build-lib . --build-temp .したら何もかも消えました。そんなものなのかのうorz

[memo][momonga] HeadのNFSサーバーがマウントできない?

rpc.idmapdが起動しないとか起動してもクライアントが接続を切られるとか。時間ができたら調べてみる。iptablesもSELinuxも関係ない(動かしていない)。

SEGVをもらいに行く

CでPythonの拡張モジュールを書いている。参照カウントを数えまちがえるとpythonをすこっと落とせます♪大変だ。

Pythonの時刻を表すクラスをみつけられない

time.timeと同じくfloatを返す関数にしちゃったけどよかったのだろうか…。

(追記)おくじさん、ありがとうございます。

言葉たらずですみません。今、Cで拡張モジュールを書いていて、ファイルに文字列として書いてあるUTの時刻を環境に依らずPythonの時刻オブジェクトにしたいと思いました。datetimeモジュールはみつけたのですがCからのAPIを見つけられず、そして、CからPythonのコードを同じインタプリタで実行する方法も見つけられませんでした。これは僕の探しかたがわるい。

一方、timeモジュールには統一的な時刻オブジェクトはなく、あるメソッドは引数としてfloatをとるしあるメソッドはstructをとるように見えました。structはCでのstrcut tmと同様のもののようで結果がタイムゾーンに依存してしまうので却下。

そういうわけで、Cでtime_tとして作った値をfloat(Cではdouble)に変換するようにしたのですが、ここで一つ心配が。doubleとtime_tって少なくとも手元のマシンではビット数が一緒なのです。ということは、2038年(でしたっけ?)が近づくと今作った関数が返す時刻の精度は1秒未満になってしまうのではないか?ということです。この関数には0.1秒の精度が必要で、Cとしてはstruct timevalを返すことで実現してるのですが。

たぶん、datetimeモジュールで定義されているクラスのオブジェクトを返せるように勉強する、というのが正道なのですよね。このモジュールにはstruct timeval相当のクラスがあったような気がします。

(もっと追記して訂正) 上で、time_tとdoubleが同じバイト数だ、と書きつつ、なにかひっかかるものがあったのでやっと調べてみました。glibc-2.3.4では、sizeof(time_t)は4、sizeof(double)は8。やっぱり嘘でした。time_tをdoubleに変換しても精度は悪くならなさそうだ。お詫びして訂正します。

嘘かと思った

納豆を一万回混ぜる

本日のツッコミ(全1件) [ツッコミを入れる]
> おくじ (2005年04月03日(Sun) 06:33)

datetimeモジュールにクラスがいろいろあるみたいです。>時刻を表すクラス<br>timeモジュールにもstruct_timeというクラスがありますね。<br>私も使ってないのでよくは分からないです。


作り手とその取り巻きだけが楽しんでる間は本物じゃない。その中身が理解できない人々の生活を変えてこそ本物だ


zunda <zunda at freeshell.org>