在 libuv 之上快速实现异步事件循环
项目描述
uvloop 是内置 asyncio 事件循环的快速、直接的替代品。uvloop 在 Cython 中实现,并在后台使用 libuv。
表现
uvloop 使 asyncio 快 2-4 倍。
上图显示了不同消息大小的回显服务器的性能。套接字基准测试使用loop.sock_recv ()和 loop.sock_sendall()方法;流基准测试使用 asyncio 高级流,由asyncio.start_server ()函数创建;并且协议基准使用带有简单回显协议的loop.create_server() 。在有关它的博客文章中阅读有关 uvloop 的更多信息 。
安装
uvloop 需要 Python 3.7 或更高版本,可在 PyPI 上使用。使用 pip 安装它:
$ pip install uvloop
请注意,强烈建议在安装 uvloop之前升级 pip :
$ pip install -U pip
使用 uvloop
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.7 或更高版本:
克隆存储库:
$ git clone --recursive git@github.com:MagicStack/uvloop.git $ cd uvloop
创建一个虚拟环境并激活它:
$ python3.7 -m venv uvloop-dev $ source uvloop-dev/bin/activate
安装开发依赖:
$ pip install -e .[dev]
构建并运行测试:
$ make $ make test
执照
uvloop 在 MIT 和 Apache 2.0 许可下获得双重许可。