libuv vs asyncio (python)

Posted

技术标签:

【中文标题】libuv vs asyncio (python)【英文标题】: 【发布时间】:2022-01-16 02:13:53 【问题描述】:

我一直在尝试找出 uvloop 和 python 内置的 asyncio 实现的区别。除了 uvloop 的基础 libuv 是用 c++ 编写的这一事实之外,网络上没有提到其他因素。我想了解影响 asyncio [它们之间的性能的其他因素。

另外,blog 由性能差异流和普通异步 io 组成,流不是从异步生成的,因此相互依赖吗?

【问题讨论】:

我不知道 uvloop 是如何工作的,但流是每个字节读取和写入输入和输出的地方。 【参考方案1】:

如你所说,uvloop 是在 libuv 之上用 Cython(相当于 c)编写的。

几乎可以保证用 Cython 编写代码可以显着提高速度,这正是这里正在发生的事情。不需要任何其他区别。这很像 numpy 执行操作的速度比在 Python 中正常编写要快。


对于您的另一个问题:asyncio 和 asyncio-streams 之间的区别在于流是建立在基本 asyncio 之上的。

Asyncio 使用transports and protocols,第一个负责写入套接字,第二个负责处理套接字接收到的数据。

流是建立在两者之上的简单结构,并且具有更易于使用的界面,可以模仿常规文件或套接字。

【讨论】:

以上是关于libuv vs asyncio (python)的主要内容,如果未能解决你的问题,请参考以下文章

Goroutines vs asyncio 任务 + CPU-bound 调用的线程池

深究Python中的asyncio库-asyncio简介与关键字

Python协程之asyncio

python:asyncio模块

Python asyncio 模块

python asyncio