我已经创建了一组 TCP 服务器的演示,但是我的 gevent 示例明显变慢了。我真的没有测试性能,但目前有些东西使 gevent 版本慢了 5 倍。
我确定一定是我编译 gevent 但无法解决问题的方式。我正在使用 fink 编译的 python 2.6 和 2.7 使用 OSX leopard。我已经尝试过稳定的 gevent 和 gevent 1.0b1 并且它的作用相同。回显需要 5 秒才能响应,而其他示例需要 <1 秒。如果我删除 urllib 调用,那么问题就会消失。
我把所有的代码放在https://github.com/djay/geventechodemo
要运行示例,我使用 zc.buildout 来构建
$ python2.7 bootstrap.py
$ bin/buildout
要运行 gevent 示例:
$ bin/py geventecho3.py &
[1] 80790
waiting for connection...
$ telnet localhost 8080
Trying 127.0.0.1...
...connected from: ('127.0.0.1', 56588)
Connected to localhost.
Escape character is '^]'.
hello
echo: avast
这需要 3-4 秒才能在我的系统上响应。
但是线程示例
$ bin/py threadecho2.py
或扭曲的例子
$ bin/py twistedecho2.py
小于1s。知道我做错了什么吗?