Doge log

Abby CTO 雑賀 力王のオフィシャルサイトです

Python

Python3 Advent Calendar - Pythonで2/3両方で動くコードを書く(C/API)

これは Python3 Advent Calendarの記事です。 こんにちわ、高校生です。 先日、子供(遼くん)が無事生まれましたが、毎日お世話で忙しいです。Python3 Advent Calendar ということでPython3に関して書いてみたいと思います。 Python3対応というのはまあいろ…

関数などの実行結果をすりかえる

こんにちは、Python界のヘンリー塚本ことmopemopeです。 なんかpythonのpycファイルをいじってアタックするとかセキュリティの話が出てきてますね。せっかくなので別の方法でこーいうこともできますよというのを紹介しておきます。 もちろん普通の人は書かな…

pyearthquakeで震源地をplotする

先日の地震に関連して。 pythonであればものすごく簡単にplotできる。 データの元ネタはUSGS。 install sudo easy_install pyearthquake plotする M6.0以上のものをplotする from pyearthquake import * catalog = usgs.retrieve_catalog("M1+PAST_7DAY") ma…

web2pyを使おう!

おはようございます!小倉智昭です! ちんこうp!ちんこうp! いやあid:moriyoshiがパイプカットするとかしないとかで盛り上がってる中恐縮なんですが今回は @aodag先生から、アドベントカレンダーが回ってきたのでその話をしたいと思います。 web2py web…

Python Hack-a-thonで話してきた

そんときの資料です。meinheldView more presentations from Yutaka Matsubara.とりあえず書いたって感じ

greenletを使う場合にはPostgreSQLを使う方がいいという話

こんにちわ、Python界の便所虫ことmopemopeです。前から書こうとしていた話を書いておきます。最近、eventlet、geventが市民権を得てきましたね。 特にgunicorn経由で使用しはじめてる人も多いんじゃないかなと思います。まあこれらは NonBlocking IO + 協調…

meinheld websocket

こんにちわ、しのまりファンことmopemopeです。 meinheld 0.3よりwebsocketをサポートする予定です。websocketはmiddleware経由で取得できます。 WebSocketMiddlewareを使うとenvironからwebsocketを取得できます。シンプルなチャットはこんな感じ。 meinhel…

meinheld Cotinuations

こんにちわ、韓流スターことmopemopeです。 meinheld 0.2よりContinuationをサポートしました。 これでlong poll(comet)も組めるようになります。chatの例:http://github.com/mopemope/meinheld/tree/master/example/chat/ from flask import Flask, render…

meinheldをリリースした

こんにちわ、闇金業者です。Cの練習とPEP333の実装として作っていたpicowsですが、せっかくなのでpypiにあげることしました。 名前も変えてmeinheldにしています。 meinheld · PyPIあとbitbucketもなんだか寂しい気がしてきたのでgithubに移動しました。http…

http_parserを乗せ変えた話

こんにちわ、情弱DQNです。最近は寝かしていたpicowsを見直しています。 その時にとある事が気になったのでhttp_parserを乗せ変えました。 でその時の話。 以前まで 今まではmongrel, thinなどでも使われているZedの書いたragelベースのhttp parser を使用し…

プロセス名を書き換える

こんにちわ、情弱です。 村崎百郎が殺されて少し動揺しています。話は変わって。。。 perlなどは$0でプロセス名を変えたりできて便利ですよね。 でpythonではできるの?って話です。ダメかと思ったが一応できるっぽい。 誰も書いてなさそうなので書いておき…

属性アクセスのパフォーマンス

tp_memberだと遅くね?通常版 bench1.py class Noddy(object): first = 2 last = 1 noddy = Noddy() d = dict() d["A"] = 1 def test1(): return d["A"] def test2(): return noddy.first if __name__=='__main__': from timeit import Timer t = Timer("tes…

sqlalchemyで結果をキャッシュする

こんにちわ、sqlalchemyを日本で一番使い倒してるであろうmopemopeです。 sqlalchemyのcacheに関して具体的なコードを書いている人がいないのはみんなexampleのあれを見てるからなのか? と思ったのですがあえて書いてみます。SQLの内容を60秒間キャッシュす…

Python Hack-a-thonの資料

皆様、お疲れ様でした。 Python Hack-a-thonとか言いつついろんな話ができるのがPython Hack-a-thonのいいところでもありますが、 せっかくなのでPythonの話もしていきたいですね。個人的には毎回、少しマニア向けなPythonネタを発表できればいいかなと思い…

eventletのクライアントコードサンプル

書いてる人ほぼ見たことないので書いておくかな。

最近のeventlet

http://sklave.jp/logs/2010/1/17/eventlet%E3%81%A7comet%E3%82%B5%E3%83%BC%E3%83%90を見て気になったのでわかる範囲で。 僕がeventletを見てたころより実はいろいろ変わってたりするわけだけど。 event(pyevent)はだめくさい 僕の環境だとimport eventが…

Python Hack-a-thon #3でeventletの話をします

みなさん、明けましておめでとうございます。 年末はCoD:MW2漬けだったmopemopeです。 ボコられすぎてデスの借金が2000を超えたのでコードの世界に帰ってきました。えーっと1/23にPython Hack-a-thon #3があるのですが、そこでeventletの話をしようと思いま…

文字列連結の効率の話

追記: ベンチ追加したふと思ったこと。 ret = ''.join([lst]) が速いというのは正しい。 でもそれはjoin関数が速いという局所的な話。ありがちなコード lst = [] for i in xrange(10000): lst.append("aaa") ret = ''.join(lst) string joinを使いたいがた…

picows その後

segvと戦いつつ、werkzeugのexampleが実行できるレベルまで持っていった。 なのでwsgi対応フレームワークはほぼ動くと思う。実装し忘れてたとこなどがあったり、なんだかんだで当初の予定よりパフォーマンスが出てない。tornadoのサイトに合わせて「ab -c 25…

速いサーバを書いても意味がないという話

全く意味がないというわけではないが。 結局アプリケーションコードが圧倒的にトロいので、サーバ側の処理部がほぼ誤差レベルになる。 レスポンス返すまでの処理時間の9割ぐらいがアプリケーションコードでとられる。 なので次はアプリケーションコードの高…

tornadoの話

話題のtornadoについてちょっと書いておきます。 フレームワークについて tornadoは一応wsgiをサポートしていますが本気で組むなら独自で持ってるAPIの方がよいでしょう。 独自のAPIの方は必要最低限な処理しかしません。 無駄なアプリケーションコードを少…

picowsのパフォーマンス

とりあえず動かすこと優先で。 メモリリークとかcloseし忘れによるCPU食いつぶしなど直した。 abで-c 100 -n 100000ぐらいで回すとこれぐらい。helllo world ベンチ nginx 3651.08 (#/sec) picows 3394.99 (#/sec) 両方ともCPUは全開で回ってる。 nginxはwor…

シンプルなWSGIサーバ picows

WSGIサーバの勉強がてらシンプルなWSGIサーバを書き始めした。 まだ全然できてませんけど。 特徴 シングルスレッド 非同期 WSGIのみサポート これだけです。シンプルです。 呼び出しもシンプルでひとつのwsgi appしか載せられません。他にもシンプルな理由は…

メモリの開放タイミング

pythonの実メモリがいつ解放されるのか気になったので調べてみた。pythonはメモリを確保する際にドバっと取って使い回すような仕組みを持っている。 (最近の言語はみんなそうかも) この領域をarenaと呼ぶ。余談だけど2.5以前(2.5の初期も入るのかな?)の…

setの話

checked が配列なので pos in checked が遅い。 勝手に採点 (Re: 自分ならこう書く - pythonでA*) - methaneのブログ あー高速化のためにsetを使うってやったことなかったな。 計測 import timeit a = range(100000) b = set(a) def test(): return 100000 i…

たらららん♪† typeを拡張するコード †たらららん♪

OOな人がpythonにくるといろいろ追加したくなる事があるだろうということで。 ほんのちょっとだけあらびきな方法です。 追加のみのサポート 更新、削除はできない(元を書き換えると副作用で何が起こるかわからないから) 決して更新がめんどくさいからじゃ…

Listの件

見落としてたっぽい。 せっかくなのでトラバしておこう。 http://d.hatena.ne.jp/methane/20090621/1245532793 http://blog.livedoor.jp/dankogai/archives/51226075.htmlまあ拡張できるんだけどね。 listにjoinを追加してみた - def __mopemope__(self, *ar…

builtinの小文字の話

うーん、これは歴史的経緯があってそーなってると思うのでどーしようもないのかな。 pythonのOOは後付けのはずなので昔のものをそのままひきずってるんだと思うなー。 まあ変えちゃうと相当動かなくなるプログラムでてきそうだし、だからといって別名でつけ…

listにjoinを追加してみた

もちろん、ご期待どおりあらびきな方法です。 src 高度に訓練されたpythonistaは継承で拡張なんてしません。 setup.py from distutils.core import setup, Extension module1 = Extension('listjoin', sources = ['listjoin.c']) setup( name='PackageName',…

別名のつけかたあれこれ

こんにちわ、訓練されたpythonistaことmopemopeです。 http://d.hatena.ne.jp/kwatch/20090714/1247572629 を読んで。 んーまあそういう仕組みが全くないというわけではないかなあ。 別名の話をちょっと書いてみたいと思います。 __builtins__について なん…