Possible Duplicate:
Is there a memory efficient and fast way to load big json files in python?
所以我有一些相当大的json编码文件。最小的是300MB,但这是目前为止最小的。其余的是多GB,从大约2GB到10GB+。
所以当我试图用Python加载文件时,似乎内存不足。我现在正在做一些测试,看看处理这些东西大概要花多长时间,看看从这里到哪里去。下面是我用来测试的代码:
from datetime import datetime
import json
print datetime.now()
f = open('file.json', 'r')
json.load(f)
f.close()
print datetime.now()
不太奇怪,Python给了我一个MemoryError。似乎json.load()调用了json.loads(f.read()),后者试图先将整个文件转储到内存中,这显然行不通。
我有什么办法可以彻底解决这个问题吗?
我知道这是旧的,但我不认为这是复制品。虽然答案是一样的,但问题是不同的。在“复制”中,问题是如何高效地读取大文件,而这个问题处理的是根本不适合内存的文件。不需要效率。
这里的问题是,JSON作为一种格式,通常会被完全解析,然后在内存中处理,对于如此大量的数据来说,这显然是个问题。
解决这个问题的方法是将数据作为文件的流读取部分使用,然后使用它,然后重复。
最好的选择似乎是使用ijson这样的模块,该模块将使用JSON作为流,而不是块文件。
编辑:也值得一看-kashif's comment关于^{} 和Henrik Heino's comment关于^{} 。
相关问题 更多 >
编程相关推荐