2017-04-12 109 views
0

因此,我向一个返回约5000个结果的API发出请求。数据结构看起来像这样:加速json解析

[{'test': '1'}, {'test': '2'}, {'test': '3'}](只有5000结果)

它目前正在大约30秒钟做这个简单的结构:

for x in ujson.loads(r.content): 
    pass 

正如你可以看到我使用ujson但与json.loads()相比,它甚至不会真的加快速度。

有关如何改善此性能的任何想法?

感谢

按照要求,如何IM定时代码:

start = time.time() 
r = requests.get(url, headers={'Range': 'items=1-5000'}) 
print 'time to make request: {0}'.format(time.time() - start) 
for x in ujson.loads(r.content): 
    pass 
print 'time to parse request: {0}'.format(time.time() - start) 
+0

您确定解析需要30秒,而不是来自api的请求/响应吗? – user2263572

+0

是的100%。我正在计时。整个过程需要60秒,请求30秒(我无法真正做到)和30秒的解析。 –

+0

你能分享一下你的计时方法吗? – Zac

回答

0

尝试:

ujson_loads = ujson.loads(r.content) 
for x in ujson_loads: 
    pass 

没有测试它,但它可能是解决您的问题的方法。

0

,因为我看到你使用Python 2,我会建议你cjson: 你需要

pip install python-cjson 

则:

import cjson 
start = time.time() 
r = requests.get(url, headers={'Range': 'items=1-5000'}) 
print 'time to make request: {0}'.format(time.time() - start) 
for x in cjson.decode(r.content): 
    pass 
print 'time to parse request: {0}'.format(time.time() - start) 

即使没有那么多沉重的JSON它比快ujson():

cjson - 解析请求的时间:0.000113010406494

ujson - 解析请求的时间:0.000193119049072