Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python gevent urllib很慢_Python_Gevent - Fatal编程技术网

Python gevent urllib很慢

Python gevent urllib很慢,python,gevent,Python,Gevent,我已经创建了一组TCP服务器的演示,但是我的gevent示例明显较慢。我并不是在测试性能,但目前有些东西使gevent版本慢了5倍 我肯定我是如何编译gevent的,但我不能解决这个问题。我正在使用OSX leopard,使用fink编译的python 2.6和2.7。我试过稳定的gevent和gevent 1.0b1,它的作用是一样的。echo需要5秒钟的响应时间,其他示例仅在Windows XP上进行了尝试。不会立即响应,但比3秒快得多。将模拟一个客户机来测量准确的时间 PS在Windows

我已经创建了一组TCP服务器的演示,但是我的gevent示例明显较慢。我并不是在测试性能,但目前有些东西使gevent版本慢了5倍


我肯定我是如何编译gevent的,但我不能解决这个问题。我正在使用OSX leopard,使用fink编译的python 2.6和2.7。我试过稳定的gevent和gevent 1.0b1,它的作用是一样的。echo需要5秒钟的响应时间,其他示例仅在Windows XP上进行了尝试。不会立即响应,但比3秒快得多。将模拟一个客户机来测量准确的时间


PS在Windows上构建libevent并非完美无瑕!不得不使用include并修复实际代码中的一个bug。将来我会坚持使用Linux来实现libevent/Gevent;)

urllib不支持http 1.1连接重用。 每次获取页面时,它都会创建一个新的TCP连接,并发生一次新的TCP握手。
urllib在有或没有gevent的情况下都会很慢。

答案是更改正在使用的默认DNS解析程序,如本对话中所述


设置GEVENT_RESOLVER=thread使其以预期速度工作

这似乎取决于我的本地网络。在我家,gevent urlib调用速度比普通urlib慢,但在办公室,两者的速度相同。非常奇怪。如果你看一下提供的代码,你会注意到我比较了两种情况下的urllib,所以这不是原因。
$ python2.7 bootstrap.py
$ bin/buildout
$ 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
$ bin/py threadecho2.py
$ bin/py twistedecho2.py