我想從位於某個URL的文件加載數據。我使用請求來獲取它(這發生得很快)。但是,使用r.json()格式化部分字典需要大約10分鐘的時間。我如何加快速度?使用.json格式化的性能問題()
match_list = []
for i in range(1, 11):
r = requests.get('https://s3-us-west-1.amazonaws.com/riot-api/seed_data/matches%d.json' % i)
print('matches %d of 10 loaded' % i)
match_list.append(r.json()['matches'])
print('list %d of 10 created' % i)
match_histories = {}
match_histories['matches'] = match_list
我知道,有一個相關的問題在這裏:Performance problem transforming JSON data,但我不知道怎樣才能應用,爲我的情況。謝謝! (我正在使用Python 3)。
編輯:
我一直在考慮,似乎有前途的不少建議,但每次我打了一個路障。
我想嘗試cjson,但我不能安裝它(PIP找不到微軟的Visual C++ 10.0,嘗試使用使用Lua的一些安裝,但我在我的道路需要CL開始)。
json.loads(r.content)導致在Python 3
一個TypeError我不知道怎麼去ijson工作。
ujson似乎大概只要採取爲JSON
json.loads(r.text.encode( 'UTF-8')。解碼( 'UTF-8')),只需長太
你確定這是json轉換專門需要時間嗎?當我嘗試這個時,我發現即使'r.content'也需要很長時間。從我看到的答覆內容大約是19MB。創建一個19MB的字符串需要很長時間,即使你不試圖將其解析爲json。 – BrenBarn
呃,19MB是teensy。但我確實發現'json.load'不會將其視爲有效的JSON,因此'json.loads(r.content)'引發'UnicodeDecodeError:'utf8'編解碼器無法解碼位置0中的字節0xc3:無效的延續byte'。我敢打賭,'r.json()'在異常處理上花費了大量的時間。 –
我不得不解碼數據爲unicode來處理它:'data = json.loads(r.text.encode('utf-8')。decode('utf-8'))' –