所以我向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)
答案 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尚未对其进行测试,但它可能是解决您问题的方法。