Skip to main content
 首页 » 编程设计

python之巨大的 JSON 列表而不会占用所有内存

2025年05月04日8bonelee

我有一个队列端点 (Celery),它在处理消息之前消耗一批消息,然后将它们全部写入一个临时文件,供另一个进程(Spark 集群)消耗。它基本上是一个巨大的字典列表,以 JSON 编码。

[{'id':1,'content'=...},{'id':2,'content'=...},{'id':3,'content'=...}.....] 

但是我们将所有消息都保存在内存中,然后是 json.dumps,它也会在内存中生成一个大字符串。那么我可以做得比将它们全部存储在内存中更好吗?我可以在消息到达时将消息转储到文件中,这样它就不会消耗太多内存吗?

请您参考如下方法:

编写自己的 JSON 编码器以实现高效的 json 编码。或者只使用 json.dump通过像对象一样传入文件指针。

另外,消费数据时不要将整个json文件读入内存。使用 json.load 而不是 json.loads,并使用标准 Python iterator interface