巨大的JSON列表没有占用所有内存

时间:2013-07-11 06:19:41

标签: python celery

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

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

但我们将所有消息保留在内存中,然后json.dumps也会在内存中生成一个大字符串。那么我能把它全部存储在内存中吗?我可以在邮件到达时将邮件转储到文件中,因此它不会消耗太多内存吗?

1 个答案:

答案 0 :(得分:1)

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

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