因此,我向一个返回大约5000个结果的API发出请求。数据结构如下所示:
[{'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)发布于 2017-04-12 21:47:58
也许你可以用r.json()代替r.content (http://docs.python-requests.org/en/master/)(https://github.com/kennethreitz/requests/blob/master/requests/models.py#L861)不知道这是不是更快。
发布于 2017-04-12 22:17:00
既然我看到您使用的是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
发布于 2017-04-12 22:13:30
尝试:
ujson_loads = ujson.loads(r.content)
for x in ujson_loads:
pass尚未对其进行测试,但它可能是您问题的解决方案。
https://stackoverflow.com/questions/43370755
复制相似问题