14 September 2014
非同期IOに向いている

非同期処理に向いている

  • IOの待ち時間が長い処理
    • コネクションの取得
    • 外部サービス、APIの呼び出し

非同期処理に向いていない

  • CPUバウンドと言われる処理
Pythonで非同期処理をするための選択肢

選択肢が多く、どれがスタンダードなのか分かりづらい

  • Twisted
    • イベント駆動型のネットワークプログラミングフレームワーク
    • TCP, UDP, SSL/TSL, HTTP, SSH, FTP
  • Tornado
    • Facebookが開発
    • 非常に高速
    • よく使われている?
  • gevent
  • スレッド、マルチプロセス、etc…

  • asyncio
    • PEP3156
    • Python3.3以上からサポート
    • Python3.4で標準ライブラリ化
    • Unixシグナルが使える
    • 任意の箇所で処理を停止し、また再開する
    • 呼び出し可能オブジェクトの非同期実行をカプセル化する
これまでasync系がサポートされなかった理由

Cのasync系を扱う方法はあったがサポートされるところまでいってなかった
Python作者の意向で新しい基板で実装したかったらしい