vetos
Ноя. 14, 2016 09:59:40
Принимаеться файл в ктором записан JSON массив. файл может быть большой (до 200МБ). Необходимо проверить массив на соответсвие формату JSON (и еще бы хотелось производить форматирование) и записать в файл в хранилище. В память все 200МБ загружать не хочется.
Подскажите, как это сделать по частям, так сказать, перекачать данные из одного файла в другой не загружая весь файл в память.
Например
[
[
1234,
1234,
1234,
465
],
[
1234,
1234,
1234,
1234
],
[
1234,
1234,
1234,
1234
],
[
1234,
1234,
1234,
1234
]
]
Нужно получить.
1234,1234,1234,465
1234,1234,1234,1234
1234,1234,1234,1234
1234,1234,1234,1234
izekia
Ноя. 14, 2016 13:15:45
а почему бы и не загрузить все 200?
и помимо стандартной реализации существуют всякие
ujson,
https://github.com/simplejson/simplejson,
rapidjson,
yajlпоследняя вроде как может парсить поток, про остальные не в курсе
vetos
Ноя. 14, 2016 13:18:59
izekia
а почему бы и не загрузить все 200?
На данный момент так и рабоатет.
Просто в дальнейшем предполагается, что таких загрузок одновременно могут быть 10-ки. Никакой памяти не хватит.
izekia
и помимо стандартной реализации существуют всякие ujson, https://github.com/simplejson/simplejson, rapidjson, yajl
последняя вроде как может парсить поток, про остальные не в курсе
Спасибо изучу вопрос.
izekia
Ноя. 14, 2016 13:32:21
10ки джсонов по 200, а Вы про смену формата не думали?
конечно не знаю всей специфики
vetos
Ноя. 14, 2016 13:38:18
izekia
10ки джсонов по 200, а Вы про смену формата не думали?
я только изучаю питон. когда начал выплнять уже понял что тут что-то не то, но такое ТЗ. нужно передавать массив массивов чисел в формате JSON - массива.
Буду рад советам по изменению структуры данных.
izekia
Ноя. 14, 2016 13:45:19
просто если это двумерный массив чисел, то ему тем более не нужна наглядность, проще передавать в бинарном виде, как вариант посмотреть на механизмы сериализации типа pickle, все зависит от задачи.
vetos
Ноя. 14, 2016 13:48:49
izekia
механизмы сериализации типа pickle
эту сериализацию придеться делать на клиенте? тогда под каждого клиента нужно будет подыскивать подходящий сериализатор или формат pickle такой же общий для разных языков?
izekia
Ноя. 14, 2016 13:57:55
vetos
эту сериализацию придеться делать на клиенте? тогда под каждого клиента нужно будет подыскивать подходящий сериализатор или формат pickle такой же общий для разных языков?
я не знаю задачи и не могу ничего сказать
про формат pickle примерно так:
The data format used by pickle is Python-specific. This has the advantage that there are no restrictions imposed by external standards such as JSON or XDR (which can’t represent pointer sharing); however it means that non-Python programs may not be able to reconstruct pickled Python objects.
но это не единственный бинарный сериализатор
vetos
Ноя. 14, 2016 14:14:46
Я вас понял. Буду думать.
еще почитаю про
izekia
всякие ujson, https://github.com/simplejson/simplejson, rapidjson, yajl
Спасибо.
vetos
Ноя. 14, 2016 15:26:03
Остановился на yajl. Есть решения для питона.
например
https://github.com/kashifrazzaqui/json-streamerПохоже тема закрыта. Спасибо за наводку.