之前一直没了解过gevent的知识,最近在研究Flask性能提升的时候看到了gevent,正好顺带了解一下。为什么不是Twisted?Twisted是依靠回调实现的异步,不是我喜欢的类型。
先做一个简单的性能测试:
a.py
b.py
执行结果如下:
$python a.py
by requests: 2.89695906639 seconds
by mutiRequests: 1.29679989815 seconds
by mutiUrllib2: 4.26026391983 seconds
$python b.py
by grequests: 1.18827795982 seconds
by gurllib2: 2.52291297913 seconds 看起来是有略微的requests请求提升了一点,这个原因大概是requests本身就对代码进行了大量有话导致的,但是看urllib2的话,实际上还是有一定的性能提升的。
gevent若是说缺点的话,目前我的感觉如下:
- 基于libev/libevent实现,无法运行在Windows平台。相对来说,Twisted就是跨平台的;Windows版本可以点这里下载:gevent1.0
- 虽然是Cypthon实现的,但是其实性能不见得比Tornado好一些;
- Twisted相对内置了很多协议,gevent现在还是差一点;太多了的Twisted也是负担
- gevent一直没有1.0的正式发布,老版本还是存在Bug的,现在只能用1.0rc。1.0发布了,小伙伴们快上吧!