2017-04-12 3 views
0

私は約5000の結果を返すAPIをリクエストしています。json parsingの高速化

[{'test': '1'}, {'test': '2'}, {'test': '3'}](のみ5000との結果)

現在、この単純な構造行うには約30秒を取っている:あなたは、私がujsonを使用している見ることができるように

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

をそのデータ構造はそうのように見えますそれは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

解析には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