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 调用的线程池