加快json解析

时间:2017-04-12 13:20:40

标签: python json performance python-2.6

所以我向API发出请求,返回大约5000个结果。数据结构如下:

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

它目前花费大约30秒来完成这个简单的构造:

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

正如您所看到我使用ujson但与json.loads()相比,它甚至没有真正加快速度。

关于如何改善这种表现的任何想法?

由于

根据要求,如何定时代码:

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)

3 个答案:

答案 0 :(得分:0)

也许你可以使用r.json()而不是r.content(http://docs.python-requests.org/en/master/)(https://github.com/kennethreitz/requests/blob/master/requests/models.py#L861) 不知道这是否更快。

答案 1 :(得分: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

答案 2 :(得分:-1)

尝试:

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

Haven尚未对其进行测试,但它可能是解决您问题的方法。