Эффективная JSON (де) сериализация из / в миллионы маленьких файлов - PullRequest
0 голосов
/ 10 января 2019

У меня есть список, содержащий миллионы маленьких записей в виде диктовок. Вместо того, чтобы сериализовать все это в один файл как JSON, я бы хотел записать каждую запись в отдельный файл. Позже мне нужно восстановить список из JSON, десериализованный из файлов.

Моя цель на самом деле не сводить к минимуму количество операций ввода-вывода, а заключается в общей стратегии сериализации отдельных элементов коллекции для разделения файлов одновременно или асинхронно. Какой самый эффективный способ сделать это в Python 3.x или аналогичном языке высокого уровня?

1 Ответ

0 голосов
/ 11 января 2019

Для тех, кто ищет современное решение на основе Python, поддерживающее async / await, я нашел этот аккуратный пакет, который делает именно то, что я ищу: https://pypi.org/project/aiofiles/. В частности, я могу сделать

import aiofiles, json
"""" A generator that reads and parses JSON from a list of files asynchronously."""
async json_reader(files: Iterable):
    async for file in files:
        async with aiofiles.open(file) as f:
            data = await f.readlines()
            yield json.loads(data)
...