asyncio自体は負荷の高いWebアプリケーションを作成できますが、モジュールを作成する際のパフォーマンスの最適化は優先事項ではありませんでした。
前述のPEP-492(async / await)Yuri Selivanov(Habré- 1st1 、 彼のtwitter )の著者の1人は、asyncio- uvloopのイベントループの代替実装の開発を取り上げました。 昨日、モジュールの最初のアルファ版がリリースされました。これについて、著者は詳細な投稿を書きました。
要するに、uvloopはNode.jsの約2倍の速度で実行され、Goプログラムにほとんど劣っています。
使用する
uvloopはCythonで記述され、libuvの上に構築されます。
モジュールを標準としてインストールできます(Windowsは現在サポートされていません):
pip install uvloop
使用も難しくありません:
import asyncio import uvloop asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
これで、asyncio.get_event_loop()を呼び出すと、uvloopインスタンスが返されます。
性能
ベンチマークに関する詳細情報(方法論と結論) は元のにありますが、以下は最終的なグラフのみです。
サイズの異なる単純なTCP要求の結果:
HTTPリクエスト: