首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪个pyzmq实现在@gen.coroutine、@asyncio.coroutine和异步之间具有最快的吞吐量?

哪个pyzmq实现在@gen.coroutine、@asyncio.coroutine和异步之间具有最快的吞吐量?
EN

Stack Overflow用户
提问于 2016-07-17 14:10:44
回答 1查看 946关注 0票数 4

目前,在pzmq中有多种实现异步IO循环的方法,这些方法在文档中都提到过。http://pyzmq.readthedocs.io/en/latest/api/index.html

从纯粹的性能角度来看,文档中并不清楚这些选择是否等效。它们是:

  • 龙卷风@gen.coroutine
  • 原生@asyncio.coroutine
  • 龙卷风异步

那么,在典型的推挽场景中,哪一个具有最佳的每秒消息吞吐量,如文档示例所示?为什么我们看到他们之间的区别?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-17 14:10:44

结果

与我的预期相反,pyzmq中的异步实现似乎都比“遗留”龙卷风一号慢。

龙卷风@gen.coroutine:

代码语言:javascript
复制
Avg. Speed: 2160.26 msg/s

本地@asyncio.coroutine:

代码语言:javascript
复制
Avg. Speed: 1697.66 msg/s

龙卷风异步:

代码语言:javascript
复制
Avg. Speed: 1695.29 msg/s

另外,这两个异步实现不时地显示高达3536.27 msg/s的突发,而Tornado @gen.coroutine在吞吐量上非常稳定。

测试代码

为了比较,我使用了以下修改版本:

龙卷风@gen.coroutine:https://github.com/zeromq/pyzmq/blob/master/examples/eventloop/coroutines.py

原生@asyncio.coroutine:https://github.com/zeromq/pyzmq/blob/master/examples/asyncio/coroutines.py

龙卷风异步:(仅限Python;包含附加打印协同线) 3.5+

修改包括每5秒显示平均消息数,而不是点。在拉协同线中,我增加n = n + 1,然后在打印协同线中计算v = n / (time.time() - start)并显示它。另外,我每10,000条消息重置一次n = 0start = time.time(),以防止测量中的任何偏移效果。

环境

代码语言:javascript
复制
$ uname -a
Linux localhost 4.6.3-300.fc24.x86_64 #1 SMP Fri Jun 24 20:52:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

$ python3 --version
Python 3.5.1

>>> zmq.__version__
'15.3.0'

>>> tornado.version
'4.3'
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38422119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档