Все еще огромное использование памяти для Python json загрузок? - PullRequest
0 голосов
/ 24 марта 2020

Да, об этом спрашивали семь лет go, но «ответы» на мой взгляд не помогли. Так много открытых данных использует JSON, поэтому я прошу об этом еще раз, чтобы увидеть, доступны ли какие-либо более эффективные методы. Я загружаю файл размером 28 МБ JSON (с 7000 строк), а объем памяти, используемый для json .loads, превышает 300 МБ.

Этот оператор выполняется неоднократно: data_2_item = json.loads(data_1_item)

и пожирает память на время работы программы. Я пробовал различные другие заявления, такие как pd.read_json(in_file_name, lines=True)
с теми же результатами. Я также пробовал простые json и быстрые json альтернативные пакеты.

Ответы [ 2 ]

0 голосов
/ 31 марта 2020

Если после загрузки вашего контента вы будете использовать только часть его, тогда рассмотрите возможность использования i json для загрузки контента JSON в потоковом режиме с низким объемом памяти потребление, и только построение данных, которые вы должны обрабатывать, а не весь объект.

0 голосов
/ 24 марта 2020

Как заметил комментатор, json .loads НЕ является виновником. data_2_item может быть очень большим - иногда 45K. Так как он добавляется в список более 7000 раз, список становится огромным (300 МБ), и эта память НИКОГДА не освобождается. Так что для меня ответ: нет решения с существующими пакетами / загрузчиками. Общая цель - загрузить большой файл JSON в кадр данных Pandas без использования 300 МБ (или более) памяти для промежуточной обработки. И эта память не уменьшается. Смотри также https://github.com/pandas-dev/pandas/issues/17048

...