首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加速json解析

加速json解析
EN

Stack Overflow用户
提问于 2017-04-12 21:20:40
回答 3查看 924关注 0票数 0

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

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

目前,完成这个简单的构造大约需要30秒:

代码语言:javascript
复制
for x in ujson.loads(r.content):
    pass

如你所见,我使用的是ujson,但与json.loads()相比,它的速度并不是很快。

对如何提高性能有什么建议吗?

谢谢

按照要求,我是如何对代码计时的:

代码语言:javascript
复制
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)
EN

回答 3

Stack Overflow用户

发布于 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)不知道这是不是更快。

票数 0
EN

Stack Overflow用户

发布于 2017-04-12 22:17:00

既然我看到您使用的是python 2,我建议您cjson:您需要

代码语言:javascript
复制
pip install python-cjson 

然后:

代码语言:javascript
复制
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

票数 0
EN

Stack Overflow用户

发布于 2017-04-12 22:13:30

尝试:

代码语言:javascript
复制
ujson_loads = ujson.loads(r.content)
for x in ujson_loads:
    pass

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43370755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档