请问tornado与gevent结合应用比原生tornado速度快的原因,tornadogevent,tornado 不是已经
请问tornado与gevent结合应用比原生tornado速度快的原因,tornadogevent,tornado 不是已经
tornado 不是已经异步了吗, 为什么加上 gevent 后会更快?
提问来自于这篇 blog, 速度测试
tornaod提供了一个魔术的stackcontext manager来提供对协程的上下文管理,而这个是tornado实现的。而gevent把相同的工作用C完成了。但是两者的效率相差并没有多少。
另外一点值得一提的时候, tornado实际上提供了一个@coroutine的机制,这个让同步的写法也消耗了效率。
题主的疑问中,异步不一定就比同步的更快吧,这需要看具体应用场景。
相比较而言,如果不是并发,并且不是针对有阻塞的操作。同步和异步谁更快还不好说。
python 的并发技术中,大致是多线程,多进程,协程。可以参考下这篇文章
tornado 可以异步也可以同步,具体还得看如何使用。
原文说:
从上面结果可能看出Tornado比Flask快很多. 而Gevent可以让Tornado更快一些, 但快不了很多.
我在别的文章里看到过这样的测试结论。既然快不了多少,不如不用。
听我老大说的, gevent 使用的是 greenlet + epoll, greenlet 自定义了栈, greenlet 有点类似 goroutine, 可以实现并行. tornado只是自已实现了 epoll.
猜测是因为gevent是c的模块,而tornado封包重组,HTTP协议解析都是python写的,比如解析HTTP头用的是正则。。。
tornado-over-gevent 中 tornado 运行于 wsgi 模式,HTTP协议解析等工作就由 gevent 完成了。
编橙之家文章,
相关内容
- 做python爬虫的时候如何判断是否抓取过了?,python爬虫
- 求问tornado 3.2 chatdemo如何实现异步,不是很理解,tornad
- 如何用python方法完善平台求手指引,python平台,之前提过
- Python logging日志归集策略问题,pythonlogging,python日志归集
- Python httplib2模拟登陆微信公共平台户名密码错误为什么
- 请问Python框架与框架之间整合应该怎么实现?,python框架
- Python lambda函数最适合出现在什么情况下,pythonlambda,被
- 求个时间复杂度极小的python算法,度极小python算法,有一
- python支持不同模块引入相同变量操作吗?,python变量,例
- 想完成批量转换文本中原有的tab与空格有什么好方法?
评论关闭