我想知道json.dump()
或json.dumps()
哪一個在將大數組編碼爲json格式時效率最高。MemoryError using json.dumps()
你能告訴我一個使用json.dump()
的例子嗎?
其實我正在製作一個Python CGI,它使用ORM SQlAlchemy從MySQL數據庫獲取大量數據,並且在一些用戶觸發處理之後,我將最終輸出存儲在最終轉換爲Json的數組中。
但轉換成JSON用時:
print json.dumps({'success': True, 'data': data}) #data is my array
我得到以下錯誤:
Traceback (most recent call last):
File "C:/script/cgi/translate_parameters.py", line 617, in <module>
f.write(json.dumps(mytab,default=dthandler,indent=4))
File "C:\Python27\lib\json\__init__.py", line 250, in dumps
sort_keys=sort_keys, **kw).encode(obj)
File "C:\Python27\lib\json\encoder.py", line 209, in encode
chunks = list(chunks)
MemoryError
所以,我的猜測是使用json.dump()
由塊到數據轉換。任何想法如何做到這一點?
或者使用其他想法json.dump()
?
我不知道實現的細節,但'轉儲'輸出到一個字符串,它必須建立並保存在內存中。 'dump'寫出一個文件,我認爲這個文件將會流式傳輸,並且不會將結果保存在內存中。 – Joe
'chunk's由'JSON.Encoder()。iterencode()'生成器生成。看到我的答案。 –