所在的位置: python >> python发展 >> AsyncPython竟不比sync

AsyncPython竟不比sync

在实际的基准测试下,async(异步)Python比“sync”(同步)Python要慢。而更让人担心的是,async框架在负载下会不稳定。作者

CalPaterson译者

香槟超新星,责编

夕颜出品

CSDN(ID:CSDNnews)

大多数人都认为异步Python的并发程度更高。这意味着对于动态网站或WebAPI等常见任务,异步能提供更高的性能。

但遗憾的是,对于Python解释器来说,异步并不能提供加速的推力。

在现实情境下(请参考下图),异步Web框架的吞吐量(请求/秒)表现更差一些,而响应延迟则差的更多。

基准结果

我测试了各种不同的同步和异步Web服务器配置:

P50和P99的响应时间以毫秒为单位,Throughput(吞吐量)以每秒请求量为单位。这个表格按P99排序,我认为这可能是现实世界中最重要的统计信息。

要注意以下几点:

1、表现最好的几个都是同步框架

但Flask的吞吐量比其他的要低

2、表现最差的几个都是异步框架

3、异步框架的响应延迟方面也差得多

4、基于uvloop的循环比内置的asyncio循环更好

因此,如果非要用asyncio,请选择uvloop

这些基准测试真的具有代表性吗?

我认为的确如此。我尽力使它们贴近现实情况了,使用的架构是这个:

我尽可能地模拟真实世界的部署:一个反向代理,python代码(比如变量),后面再跟着一个数据库。我还加入了一个外部数据库连接池,因为我认为在Web应用程序实际部署中这种做法相当常见(至少对postgresql来说是这样的)。

测试的应用程序通过随机key查询数据库某行,并将值以JSON的形式返回。完整的源代码可在github上找到。

(链接:


转载请注明:http://www.aierlanlan.com/tzrz/139.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了