我正在处理巨大的JSON文件,大小从100-300mb不等。因此为了节省磁盘空间(和计算时间?),我将JSON文件转换为.json.gz
文件,并按如下方式进行:
with gzip.GzipFile(json_file, 'r') as f:
return json.loads(f.read().decode('utf-8'))
json.loads
没有引起内存使用方面的任何问题,但是我想提高速度,因此我尝试了py-yajl
(不要与yajl-py混淆,我也尝试了,但是由于我正在解析流式JSON,所以花费了更多的时间),如下所示:
yajl.loads(f.read().decode('utf-8'))
但正如我在声称yajl
比json
和simplejson
库快的网站上看到的,我看不到执行时间的改进。相反,与json
相比,它花费了更多的时间。我是不是漏了什么?在什么情况下,yajl
应该比json/simplejson
快?速度是否也取决于JSON文件的结构?你知道吗
我的JSON文件如下所示:
[
{
"bytes_sent": XXX,
"forwardedfor": "-",
"hostip": "XXX",
"hostname": "XXX",
"https": "on",
"landscapeName": "XXX",
},
...
]
我知道这是一个主观的问题,可能会被关闭,但我不能消除我的疑虑,在任何地方,同时,我想知道的区别b/w这些图书馆更详细,因此问这里。你知道吗
如果您同时将整个结构读入内存,那么外部库没有任何好处。这样一个工具的动机是,它允许你零碎地处理事情,而不必先把整个事情加载到内存中,或者根本不需要。如果JSON是一个事物列表,那么通过库提供的回调一次处理一个事物。你知道吗
相关问题 更多 >
编程相关推荐