从/到数百万个小文件的高效JSON(反)序列化

时间:2019-01-10 10:28:12

标签: json asynchronous concurrency io

我有一个包含数百万条小记录作为dict的列表。与其将整个事情作为JSON序列化到一个文件中,不如将每个记录写入一个单独的文件中。稍后,我需要从文件中反序列化的JSON重构列表。

我的目标并不是真正地将I / O最小化,而只是将单个集合元素序列化以同时或异步分离文件的一般策略。在Python 3.x或类似的高级语言中,最有效的方法是什么?

1 个答案:

答案 0 :(得分:0)

对于那些正在寻找支持异步/等待的基于Python的现代解决方案的人来说,我发现了这个精巧的软件包,它确实可以满足我的需求: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)