gpt4 book ai didi

python - 加载一个编码为 Json 的大型 Python 字典而不影响内存使用?

转载 作者:太空狗 更新时间:2023-10-29 21:50:40 25 4
gpt4 key购买 nike

我见过很多与此类似的问题,但没有真正匹配的问题。大多数其他问题似乎与速度有关。我遇到的是一个 json 字典,它位于我本地机器上的一个 1.1gig 文件中,当我尝试使用以下任何方式加载它时,它占用了我所有的 16 GB 内存:

f = open(some_file, "rb")
new_dictionary = json.load(f)

无论我使用什么 json 库(我已经尝试过 ujson、json、yajl),无论我是否以字节流形式读取内容,都会发生这种情况。这对我来说完全没有意义。疯狂的内存使用是怎么回事,我该如何解决?

如果有帮助的话,字典只是一堆嵌套的字典,它们都有指向其他整数的整数。示例如下:

{"0":{"3":82,"4":503,"15":456},"956":{"56":823,"678":50673,"35":1232}...}

更新:当我使用 simplejson 运行它时,它实际上只占用 8 gig。不知道为什么那个比其他所有的都少。

更新 2: 所以我做了更多调查。我用 simplejson 加载了我的字典,并尝试将所有键转换为整数(根据 Liori 的建议,字符串可能会占用更多空间)。空间保持不变,为 8 场演出。然后我尝试了 Winston Ewert 关于运行 gc.collect() 的建议。空间仍然保持在 8 场演出。最后,我既恼怒又好奇,对我的新数据结构进行了 pickle,退出 Python,然后重新加载。你瞧,它仍然占用 8 场演出。我猜 Python 只是想要那么大的空间来容纳一个大的 2d 字典。这当然令人沮丧,但至少现在我知道只要我使用 simplejson 加载它就不是 JSON 问题。

最佳答案

您可以尝试使用流式 API:

http://lloyd.github.com/yajl/

其中有几个 python 包装器。

https://github.com/rtyler/py-yajl/

https://github.com/pykler/yajl-py

关于python - 加载一个编码为 Json 的大型 Python 字典而不影响内存使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10456177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com