Python 的 json 负载仍然占用大量内存?

Still Huge Memory usage for Python's json loads?

是的,七年前有人问过这个问题,但 'answers' 在我看来没有帮助。如此多的开放数据使用 JSON,所以我再次询问这个问题,看看是否有更好的技术可用。我正在加载一个 28 MB JSON 文件(7,000 行),用于 json.loads 的内存超过 300 MB。

这条语句被运行重复: data_2_item = json.loads(data_1_item)

并且在程序运行期间占用内存。我尝试了其他各种陈述,例如 pd.read_json(in_file_name, lines=True)
结果相同。我也尝试过 simplejson 和 rapidjson 替代包。

正如一位评论者所说,json.loads 不是罪魁祸首。 data_2_item 可能非常大 -- 有时 45K。由于它被附加到列表中超过 7,000 次,列表变得巨大(300 MB)并且该内存永远不会被释放。所以对我来说,答案是:现有 packages/loaders 没有解决方案。总体目标是在不使用 300 MB(或更多)内存进行中间处理的情况下,将大型 JSON 文件加载到 Pandas Dataframe 中。而且那个内存不会缩水。另见 https://github.com/pandas-dev/pandas/issues/17048

如果在加载您的内容后您将仅使用其中的 部分 然后考虑使用 ijson 以流方式加载 JSON 内容,内存消耗低,只构建您需要处理的数据而不是整个对象。