加快阅读python中的url响应

时间:2013-06-09 09:26:03

标签: python elasticsearch urllib

我有一段代码可以查询返回大型json对象的服务器(elasticsearch,BTW), 阅读结果需要花费大量时间。解析json对象非常快。

tic = time.time()
req_resp = urllib2.urlopen(req, timeout = 60)
toc=time.time()
a = toc-tic

tic = time.time()
json_str = req_resp.read()
toc=time.time()
b = toc-tic

tic = time.time()
resp = json.loads(json_str)
toc=time.time()
c = toc-tic

print 'Fetch %.1f Process %.1f, load Json %.1f' %(a,b,c)

输出:

Fetch 0.5 Process 3.5, load Json 0.0

这似乎很奇怪,这需要花费很多时间,而加载json的速度很快。我究竟做错了什么?任何方式更快地做到这一点?

仅供参考,这是对elasticsearch中1000个文档的查询,返回几个字长的字符串字段。

我正在使用python 2.7

1 个答案:

答案 0 :(得分:1)

socket模块依赖于用{+ C ++编写的_socket(我认为?)。据推测,在C ++和Python之间传输大量数据的开销很大。 .read()我还得到一个奇怪的大开销,你没有用大数据集来尝试它,所以它不比获取时间大。我不确定除了切换到另一种语言之外你还能做些什么。如果我发现其他任何事情,我会做更多测试并回复你。

相关问题