0

我有一段代码查询返回一个大 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 速度很快。我究竟做错了什么?有什么方法可以更快地做到这一点?

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

我正在使用 python 2.7

4

1 回答 1

1

socket模块依赖于_socket哪个是用 C++ 编写的(我认为?)。据推测,在 C++ 和 Python 之间传输大量数据会产生开销。我也得到了一个奇怪的大开销,.read()我没有尝试过使用大量数据集,所以它不大于获取时间。我不确定除了切换到不同的语言之外你还能做些什么。如果我发现任何其他问题,我将进行更多测试并回复您。

于 2013-06-09T12:08:36.670 回答