uvloop
v0.21.0
uvloop 是內建 asyncio 事件循環的快速、直接替代品。 uvloop 在 Cython 中實現,並在底層使用 libuv。
專案文件可以在這裡找到。另請查看 wiki。
uvloop 使 asyncio 速度提高 2-4 倍。
上圖顯示了不同訊息大小的 echo 伺服器的效能。套接字基準測試使用loop.sock_recv()
和loop.sock_sendall()
方法;流基準測試使用 asyncio 高階流,由asyncio.start_server()
函式建立;協定基準測試使用帶有簡單 echo 協定的loop.create_server()
。在有關 uvloop 的部落格文章中了解有關 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()
工作原理是簡單地將asyncio.run()
配置為使用 uvloop,將所有參數傳遞給它,例如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 授權的雙重許可。