タグ

Pythonとgreenletに関するblueleのブックマーク (3)

  • Pinterest: geventでコードベースをマルチスレッドに - ワザノバ | wazanova.jp

    http://engineering.pinterest.com/post/65713073803/how-we-use-gevent-to-go-fast Pinterestエンジニアブログで、Pythonの数十万行のシングルスレッドのコードベースをgeventを利用してマルチスレッドにした経験を紹介しています。 1) Lessons from the early days シングルスレッドのコードベースでサイトの急成長に対処していくうちに、 機能が増えるにつれてサーバが増えた。 バックエンドのサーバが増えたら、障害や遅延のリスクが増した。 コードにロジックが増えたので、network IOなど並列処理をしたかったが、シングルスレッドサーバが足かせになった。 2) Building high performance servers 並列処理サーバを実現するための解がgeventであった

  • eventlet - Doge log

    eventletを少し調べてみた。意外にいい。 twistedよりも軽量(コード量などが) コルーチン生成にgreenletを使用。自前のスタックを使っての継続処理 コルーチンで協調スレッド(co-operate)を実現 socketメソッド、sleepでコンテキストスイッチが発生し、他に処理を譲る(待ちが発生するところでスイッチする) I/O多重化部はselect,poll,libevent(pyevent)から選べる。pyeventがあればそれを優先 mod_wsgiブリッジを持つ。wsgiに対応してればうごかせる。(但し、DBを使ってるとその処理でブロックする。DB処理もeventlet風に修正する) twistedサポートがある。EventReactorをインストールできる nginxサポートがある。フロントエンドnginxを使用 backdoor。python interpre

    eventlet - Doge log
  • greenletを使う場合にはPostgreSQLを使う方がいいという話 - Doge log

    こんにちわ、Python界の便所虫ことmopemopeです。 前から書こうとしていた話を書いておきます。 最近、eventlet、geventが市民権を得てきましたね。 特にgunicorn経由で使用しはじめてる人も多いんじゃないかなと思います。 まあこれらは NonBlocking IO + 協調スレッドなわけなんですが、全部をうまく 非同期で処理できるわけではありません。 サードパーティのライブラリがC拡張であると割り込めないのでどうしようもないのです。 サードパーティのライブラリで一番使っているのはそうです、DBドライバです。 肝心のDBドライバがブロックしちゃうともったいないわけです。 これって問題だなーと思ったpsycopg2の人たちは拡張できる仕組みを入れました。 (2.2以降) eventletを例に見てみましょう。 psyco_eventlet.py import psyc

    greenletを使う場合にはPostgreSQLを使う方がいいという話 - Doge log
  • 1