Skip to main content

在 libuv 之上快速实现异步事件循环

项目描述

https://img.shields.io/github/workflow/status/MagicStack/uvloop/Tests https://img.shields.io/pypi/v/uvloop.svg PyPI - 下载

uvloop 是内置 asyncio 事件循环的快速、直接的替代品。uvloop 在 Cython 中实现,并在后台使用 libuv。

可以在 此处找到项目文档。另请查看 wiki

表现

uvloop 使 asyncio 快 2-4 倍。

https://raw.githubusercontent.com/MagicStack/uvloop/master/performance.png

上图显示了不同消息大小的回显服务器的性能。套接字基准测试使用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 或更高版本:

  1. 克隆存储库:

    $ git clone --recursive git@github.com:MagicStack/uvloop.git
    $ cd uvloop
  2. 创建一个虚拟环境并激活它:

    $ python3.7 -m venv uvloop-dev
    $ source uvloop-dev/bin/activate
  3. 安装开发依赖:

    $ pip install -e .[dev]
  4. 构建并运行测试:

    $ make
    $ make test

执照

uvloop 在 MIT 和 Apache 2.0 许可下获得双重许可。

发布历史 发布通知| RSS订阅