GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

MagicStack

uvloop – 超高速asyncioイベントループ

投稿日:

超高速asyncioイベントループ。

uvloopは組み込みのasyncioイベントループを高速でドロップイン置換したものです。 uvloopはCythonで実装され、libuvをフードの下で使用します。

プロジェクトのドキュメントはここにあります wikiもチェックしてください。

パフォーマンス

uvloopはasyncioを2-4倍高速化します。

上記の図は、メッセージサイズが異なるエコーサーバーのパフォーマンスを示しています。 ソケットのベンチマークでは、 loop.sock_sendall()メソッドとloop.sock_sendall()メソッドが使用されます。 ストリームベンチマークでは、 asyncio.start_server()関数で作成されたasyncio.start_server()ハイレベルストリームを使用します。 プロトコルベンチマークは単純なエコープロトコルでloop.create_server()を使用します。 uvloopのパフォーマンスについての詳細を読む。

インストール

uvloopにはPython 3.5が必要で、PyPIで利用できます。 pipを使ってインストールしてください:

$ pip install uvloop

uvloopの使用

asyncioでuvloopを使用するには、uvloopイベントループポリシーをインストールします。

import asyncio
import uvloop
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())

あるいは、ループのインスタンスを手動で作成することもできます。

loop = uvloop.new_event_loop()
asyncio.set_event_loop(loop)

uvloopの開発

uvloopを構築するには、CythonとPython 3.5が必要です。 最善の方法は仮想envを作成することです。そうすればcythonコマンドとpythonコマンドが正しいツールを指し示すようになります。

  1. git clone --recursive git@github.com:MagicStack/uvloop.git
  2. cd uvloop
  3. make
  4. make test

ライセンス

uvloopは、MITとApache 2.0ライセンスの下で二重ライセンスを取得しています。







-MagicStack
-, , , , , , , , ,

執筆者: