uvloop は、組み込みの asyncio イベント ループを高速に置き換えるドロップインです。 uvloop は Cython で実装されており、内部で libuv を使用します。
プロジェクトのドキュメントはここにあります。ウィキもぜひチェックしてみてください。
uvloop により、asyncio が 2 ~ 4 倍高速になります。
上のグラフは、さまざまなメッセージ サイズでのエコー サーバーのパフォーマンスを示しています。ソケットベンチマークは、 loop.sock_recv()
とloop.sock_sendall()
メソッドを使用します。ストリームベンチマークは、 asyncio.start_server()
関数によって作成された asyncio 高レベル ストリームを使用します。また、プロトコルベンチマークでは、単純なエコー プロトコルを使用して、 loop.create_server()
を使用します。 uvloop について詳しくは、ブログ投稿をご覧ください。
uvloop には Python 3.8 以降が必要で、PyPI で利用できます。 pip を使用してインストールします。
$ pip インストール uvloop
uvloop をインストールする前に pip をアップグレードすることを強くお勧めします。
$ pip install -U pip
uvloop 0.18 では、 uvloop.run()
ヘルパー関数を使用することが推奨されています。
import uvloop
async def main ():
# Main entry-point.
...
uvloop . run ( main ())
uvloop.run()
uvloop を使用するようにasyncio.run()
を設定し、 debug
などのすべての引数を渡します ( uvloop.run(main(), debug=True)
など)。
Python 3.11 以前では、次の代替スニペットを使用できます。
import asyncio
import sys
import uvloop
async def main ():
# Main entry-point.
...
if sys . version_info >= ( 3 , 11 ):
with asyncio . Runner ( loop_factory = uvloop . new_event_loop ) as runner :
runner . run ( main ())
else :
uvloop . install ()
asyncio . run ( main ())
uvloop を構築するには、Python 3.8 以降が必要です。
リポジトリのクローンを作成します。
$ git clone --recursive [email protected]:MagicStack/uvloop.git $ cd uvloop
仮想環境を作成してアクティブ化します。
$ python3 -m venv uvloop-dev $ ソース uvloop-dev/bin/activate
開発依存関係をインストールします。
$ pip install -e .[dev]
テストを構築して実行します。
$メイク $ テストを作成する
uvloop は、MIT ライセンスと Apache 2.0 ライセンスに基づくデュアルライセンスです。