2017-04-12 86 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