0


python--uvloop超级快的 Python 异步网络框架

asyncio是遵循Python标准库的一个异步 I/O框架.在这篇文章里,我将介绍 uvloop: 可以完整替代asyncio事件循环.uvloop是用Cython写的,基于 libuv.

uvloop 使得 asyncio 更快. 实际上,比nodejs,gevent,以及其他任何Python异步框架至少快两倍 .uvloop asyncio 基于性能的测试接近于Go程序.

Uvloop最终目的使得Asyncio更加快速。

asyncio 和 uvloop

asyncio 模块, 是在 PEP 3156引入的, 是一个集合,包含网络传输, 协议, 和抽象的流, 带有可插拔的事件循环. 事件循环是asyncio的核心.它提供如下API:

  • 调用方法的调度
  • 通过网络传输数据
  • 执行 DNS 查询,
  • 处理 OS 操作系统信号
  • 对创建服务器和连接进行封装
  • 子进程异步处理

uvloop 是 Python 内建的 asyncio 事件循环的替代品,你可以通过 pip 来安装:

 pip install uvloop

在你的 asyncio 代码中使用 uvloop 非常简单:

**import** asyncio
**import** uvloop
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())

上面这段代码使得任何对

asyncio.get_event_loop()

的调用都将返回一个 uvloop 的实例。

实例2:

import asyncio
import uvloop

声明使用 uvloop 事件循环

asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
loop = uvloop.new_event_loop()
asyncio.set_event_loop(loop)

我们可以安全地下结论说,有了 uvloop,我们可以写出每秒每 CPU 核心可以推送上万次请求的 Python 网络互连代码。在一个多核心系统上,用上进程池,也许还可以进一步地提高性能。

在 Python 3.5 中,配合async/awit的力量, uvloop 和 asyncio 使得用 Python 写出高性能的网络互连代码比以前任何时候都简单。

标签: python

本文转载自: https://blog.csdn.net/Silentli20/article/details/116590685
版权归原作者 wlq* 所有, 如有侵权,请联系我们删除。

“python--uvloop超级快的 Python 异步网络框架”的评论:

还没有评论