Самый быстрый способ объединить множество файлов JSON, которые не помещаются в памяти.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Самый быстрый способ объединить множество файлов JSON, которые не помещаются в памяти.

Сообщение Anonymous »

У меня около 100 000 файлов JSON с такой структурой:
{'images': [],
'annotations': [],
'videos': []}

Размер каждого JSON различается, но в среднем он составляет около 2 МБ. У меня много оперативной памяти (488 ГБ), но, похоже, в память умещается только около 70% из них.
Каким будет самый быстрый способ в Python объединить их в один JSON? файл (с теми же тремя ключами, где списки объединены в один большой список)?

Я рассматривал возможность перебрать их все 3 раза (один цикл для каждый ключ) и добавление в файл, но это было бы очень медленный. Я не уверен, существует ли лучший способ.
Вот как я попытался загрузить их все одновременно (это замедляет работу, а затем завершается сбоем):
from glob import glob
import json
from tqdm import tqdm

full = {
'videos': [],
'images': [],
'annotations': []
}

for fp in tqdm(glob('coco_parts/*.json')):
with open(fp, 'r') as f:
single = json.load(f)
full['videos'] += single['videos']
full['images'] += single['images']
full['annotations'] += single['annotations']


Подробнее здесь: https://stackoverflow.com/questions/639 ... -in-memory
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»