uvloop
v0.21.0
uvloop 是内置 asyncio 事件循环的快速、直接替代品。 uvloop 在 Cython 中实现,并在底层使用 libuv。
项目文档可以在这里找到。另请查看维基百科。
uvloop 使 asyncio 速度提高 2-4 倍。
上图显示了不同消息大小的回显服务器的性能。套接字基准测试使用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 许可证的双重许可。