Python
http://d.hatena.ne.jp/mopemope/20081016/p1 >>> 3.0/2 1.5 >>> 3.0//2 1.0 切り捨て除算がある言語は珍しいのかな?と思って書いてみました。 id:morchinさん、id:odzさん回答ありがとうございました。 id:morchinさんの回答は強制型変換などさらに詳しく…
別に2.6じゃなくても簡単に書こうと思えば書けるよねえ。 でmultiprocessingモジュールの中身はどうなってるのかって話があまり書かれてない感じだったので書いてみた。概略的なコードは以下。 import os import sys import time class Process(object): def…
Pythonクイズ(辞書の非破壊的操作) >>> d1 = {'a':1, 'b':2, 'c':3} >>> d2 = {'c':4, 'd':5, 'e':6} >>> print dict(d1.items()+d2.items()) {'a': 1, 'c': 4, 'b': 2, 'e': 6, 'd': 5} >>> d1 {'a': 1, 'c': 3, 'b': 2} >>> d2 {'c': 4, 'e': 6, 'd': 5} >…
http://d.hatena.ne.jp/a2c/20081008/1223403985 multiprocessing部はPEP8になってない部分が多かったり、ドキュメントが適当だったりする。 (python2.6で増えた部分は割りと適当なのかも。kqueueんところも最初すげー適当だったし) bm_server.py from mul…
一部で話題の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…
置き換えをサポートした。 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…
最近、non-bloking I/O+強調スレッド+prefork(multiprocessing)なサーバフレームワーク的なものを 作ろうかと試行錯誤してる。 (aioはその次) でこいつを実現する上で重要なgreenletの解説があんましないので書いてみる。 greenletとは stackless pythonの…
こんにちは!DQNです! python2.6はいろいろ変更点が入って便利になります。 python2.6からはselectモジュールにepoll、kqueueが追加されます。 DQNが思うに変更点の目玉のひとつかだけど余り触れられてないと思うので書いて見る。 ほぼCのラッパーなので使…
こんにちわ!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でコンテキストスイッチが発生し、他に…
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があるので割とすぐできそ…
pythonだとどうなの? 一番楽なのはdoctestだと思うんだけど。 テストとコードが一体化(つーか仕様書にもなる)してるので コード直す テストのファイル開いて直す とかイチイチしなくていい。 インタプリタでためしたのそのまま張ってもいいし。 でもそん…
id:nishiohirokazuも書いてるけど。 # 3.3 Trying out the translator * 3.3.1 Trying out the type annotator * 3.3.2 Translating the flow graph to C code * 3.3.3 Translating the flow graph to LLVM code * 3.3.4 Translating the flow graph to Java…
これぐらいバカでもできるよ。 grammer.txt IGNORE: " "; NAME: "[a-zA-Z_]*"; NUMBER: "0|[1-9][0-9]*"; arith_expr: term ("+" term)+ | # was (("+"|"-") term)* term ("-" term)+ | <term>; term: factor ("*" term)+ | # was (("*"|"/"|"%"|"//") factor)* fa</term>…
原点に戻る。plyでminilispを実装します。 紹介の意味も込めて某所にあったのをほぼそのまま載せます。 plyのシンプルさ(Lispのシンプルさ?)がわかってもらえるかと思います。 minilisp_lex.py import ply.lex as lex tokens = ('QUOTE', 'SIMB', 'NUM', …
結局、追いかけてるとANTLR方面も見始める事になりそうだ。 ASTも作れる(らしい)のでANTLRの方が楽は楽なんだろうけど。 plyとANTLR(python api)だと全然速度ちゃうんだねー。メモリ消費量はともかく。 あとEBNFみたいな書き方も慣れない。plyはよりpython…
再起動の間にチラ見。 枠だけの提供なのか。サンプルはapp起動してるだけ。 http://code.google.com/p/frontpython/ BRControllerを継承してinit,wasPushedを実装するだけ。 (もちろんサイズなど計算しないといけないけど) なんかtimerとか使って起動をチェ…
当分、PLYをいじることになりそうだ。 この辺に手を出すとは自分でも思ってなかったな。 PLYといえばid:nishiohirokazuなので今度会ったら教えてもらう。