возникли проблемы, когда свалки диктуют JSON? - PullRequest
1 голос
/ 29 декабря 2011

Здесь я хочу вывести «большой» дикт в json, как показано ниже:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import simplejson as json

doc = {}
# appending the doc, so that the doc is more than 2G
.....

json_doc = json.dumps(doc)

Затем я получил следующее сообщение об ошибке:

  File "C:\Python27\lib\site-packages\simplejson\__init__.py", line 286, in dump
s
    return _default_encoder.encode(obj)
  File "C:\Python27\lib\site-packages\simplejson\encoder.py", line 228, in encod
e
    chunks = list(chunks)
MemoryError

Как я могу исправитьЭто?спасибо!

1 Ответ

5 голосов
/ 29 декабря 2011

Если памяти недостаточно, вы можете попытаться постепенно кодировать объект в json:

import json
import sys

d = dict.fromkeys(range(10))
for chunk in json.JSONEncoder().iterencode(d):
    print(chunk) # print each chunk on a newline for demonstration

Не накапливайте выходные данные в строке, используя файл / сокет и записывайте / отправляйте куски немедленно.

Выход

{
"0"
: 
null
, 
"1"
: 
null
, 
"2"
: 
null
, 
"3"
: 
null
, 
"4"
: 
null
, 
"5"
: 
null
, 
"6"
: 
null
, 
"7"
: 
null
, 
"8"
: 
null
, 
"9"
: 
null
}
...