2008-01-01から1年間の記事一覧
http://d.hatena.ne.jp/a2c/20081008/1223403985 multiprocessing部はPEP8になってない部分が多かったり、ドキュメントが適当だったりする。 (python2.6で増えた部分は割りと適当なのかも。kqueueんところも最初すげー適当だったし) bm_server.py from mul…
http://twistedmatrix.com/pipermail/twisted-python/2005-January/009341.html 意外に古くからあるっぽい。
一部で話題のSpawning Spawning · PyPI 速いだの遅いだのなんか揉めてたけどどうなったのか。とりあえず中でやってる事のメモ socketをbind,listenまでする(rangeで8回繰り返す意味がよくわからなかった) num_processの指定数分だけプロセスを作りにかか…
python2.6 親はメインのacceptに専念。 子プロセス側でecho処理。 from multiprocessing import _multiprocessing import os import socket import time class FDDispatchServer(object): def __init__(self): self.is_child = None def fork(self): pid = o…
ブロッキングコードのように書けるライブラリと同じようなものをrubyで書いたら.... Ruby1.9以降で greenlet→Fiberで代用。+αが必要 kqueue,epoll→なんかいい定番のラッパーがあればそれを で多分書けそうな気がするんだよなあ。 rubyをはじめる時期なのかも…
置き換えをサポートした。 socketモジュールとして動作する。 from mopenio.thread import threaded from mopenio.io import install_nio import socket install_nio() @threaded def handle_client(conn): data = conn.recv(8192) conn.send(data) conn.clo…
PEP以外の細かいメモ。 schedモジュール scheduleを行うモジュール。 スケジューリングする基準になる時間取得関数などを設定可能。 スケジューリングする際に、時間、優先度、関数、引数を渡す。 内部キューにためる。 runでスケジューラー起動。 キューに…
今作ってるやつ。 python2.6以降前提。 モジュール名募集! ブランド力が大事らしいのでmopenioになりました。 non blocking I/Oだけどブロッキングコードのように書ける。 コアはeventletとほぼ同じになった。。。。 (丸パクリ) from mopenio.thread impo…
multiprocessingといっても今まであったos.forkをうまくラップしてくれてる というだけなのでプロセスをforkしたらどうなるの?っていうのを知らないと 扱えないと思われる。forkすると子プロセスには今までの状態がコピーされるがその後はメモリ空間が 別々…
何秒後に実行する、キューにためこむイメージで後々、まとめて実行するなど スケジューリングして実行するサンプル。方法は2つあってbisectかheapq。 どちらもソート済みにするって点は同じかな。 bisect import bisect import time timers = [] def add_ti…
http://anond.hatelabo.jp/20080322052701 なんだこれ? クラスのhashがNoneなだけでインスタンス化すると正しく__hash__に値が入るよ。 (というかクラスをキーにしたい発想なのかな?)2.5との異なる理由はクラスの扱いがabcの兼ね合いでなんか変ってるせ…
最近、non-bloking I/O+強調スレッド+prefork(multiprocessing)なサーバフレームワーク的なものを 作ろうかと試行錯誤してる。 (aioはその次) でこいつを実現する上で重要なgreenletの解説があんましないので書いてみる。 greenletとは stackless pythonの…
こんにちは!DQNです! python2.6はいろいろ変更点が入って便利になります。 python2.6からはselectモジュールにepoll、kqueueが追加されます。 DQNが思うに変更点の目玉のひとつかだけど余り触れられてないと思うので書いて見る。 ほぼCのラッパーなので使…
なんか色々勘違いしてた Pythonのthreadモジュールはpre-emptive 実際にはGILがあるので100バイトコードごとの協調スレッドのようにふるまう でもPy_BEGIN_ALLOW_THREADS で実行権は譲れる(その間は通常のpre-emptiveなスレッド) I/O待ちの直前でPy_BEGIN_AL…
こんにちわ!DQNです! thundering herd 問題の解決法のひとつ、子プロセスにファイル記述子を送りつけるって奴を実験。 Python C拡張のサンプルにもなってるけどDQNなので難しいことはまったくできませんよ! sendmsg.c #include <Python.h> #include <sys/socket.h> static PyObject *</sys/socket.h></python.h>…
preforkなサーバーを書いてみようと思い、参考にpython2.6から使えmultiprocessing.pyを見てみた。 APIのドキュメントを見るとsendmsgとか使えなさそうな感じ。 なのでmultiprocessing.pyでは親プロセスでacceptしたソケットを子プロセスに転送して処理する…
eventletを少し調べてみた。意外にいい。 twistedよりも軽量(コード量などが) コルーチン生成にgreenletを使用。自前のスタックを使っての継続処理 コルーチンで協調スレッド(co-operate)を実現 socketメソッド、sleepでコンテキストスイッチが発生し、他に…
thread周りもふくむ Pythonのthreadモジュールはpre-emptive clone()がつかえるんならコンテキスト切り替えのコストは大分少ないから速いんじゃない? GILのLock取得とかその辺の排他制御が重い? そもそもGILがあるってことは実質的な動作はco-operativeのよ…
けつのろん、C書けって話ですよね!!
TwistedのMLでなんか出てるけど実際に実装されてないんじゃなかろうか?APIはadbapiのAPIに似たのでいいかなと思ってたらadapiってDBAPI-2.0意識してんのね。 めんどくさ。 (descriptionとfetch系があればいい気がするお) まあpgasyncもDBAPI-2.0を意識してる…
twistedベースのmysql driver twistedベースのジョブサーバ(Gearmanクローンっぽいのとか?) twistedベースのリアルタイムPushサーバ あたり。 やっぱCodeReposあたりがいいのかな。 いまみたらpySchwartzなんてものがあるのでjoinしたほうがええのかもしれな…
GitHub - mopemope/pure-python-mysql: This is PyMySQL original code. Pure python interface to MySQL. ソース見たいひとはどぞ
あとひといき! excutemanyとcallproc以外PEP-249に対応した!(はず) FIELD_TYPEのSETもまだだけど。 nextsetもできた。 249対応できたらどっかに公開する予定。 あとモジュール名募集中です。 なんかいいのないかな?
こいつがなければ何も出来ません。 探したけど自分で書くしかないのかなあと。 あんましなさそう(?)なので晒しておく。 def dump_packet(data): def isAscii(data): if data.isalnum(): return data return '.' print "method call: %s \npacket dump" % …
PEP 249に対応しようとしてるんだけどなかな難しい。 description。今ぶつかってる問題がここ。 Field Packetでは lengthはバイト数で返ってくる fieldのcharsetは取れるが、何バイトの文字なのかは送られてこない display_sizeが謎 utf8のvar_charだと50ー>…
昔、出すとかなんとかあった気がするんだけど結局のところ出てない。 なので自分で書いてみることにした。 参考になるのは Net::MySQL Ruby/MySQL mysqlのsrc python-mysql protocolバージョンは10。4.0は捨ての方向で。 Net::MySQLがあるので割とすぐできそ…
早くも後悔
うちの会社の亀子のぶおこと id:yone098 がいろんなところでキモイことしゃべるらしいです。 エンジニアの未来サミット Seasar Conference 2008 Autumn - Session キッ☆モッ☆イッ! キモイッッッッ! 株式会社Abby ではキモイ人募集しています
そろそろ活動再開すっかなあ。 完全にリセットされてる状態なのでネタ募集。
とりあえず人生の問題のひとつをクリアできそうだ。