2

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

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

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

4

1 回答 1

1

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

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

于 2013-08-05T03:24:15.527 回答