使用json.loads文件v/秒yajl.负载用于在python中读取大型JSON文件

2024-05-13 21:42:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理巨大的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'))

但正如我在声称yajljsonsimplejson库快的网站上看到的,我看不到执行时间的改进。相反,与json相比,它花费了更多的时间。我是不是漏了什么?在什么情况下,yajl应该比json/simplejson快?速度是否也取决于JSON文件的结构?你知道吗

我的JSON文件如下所示:

[
    {
        "bytes_sent": XXX,
        "forwardedfor": "-",
        "hostip": "XXX",
        "hostname": "XXX",
        "https": "on",
        "landscapeName": "XXX",
    },
    ...
]

我知道这是一个主观的问题,可能会被关闭,但我不能消除我的疑虑,在任何地方,同时,我想知道的区别b/w这些图书馆更详细,因此问这里。你知道吗


Tags: 文件pyjsonread时间速度utfxxx
1条回答
网友
1楼 · 发布于 2024-05-13 21:42:55

如果您同时将整个结构读入内存,那么外部库没有任何好处。这样一个工具的动机是,它允许你零碎地处理事情,而不必先把整个事情加载到内存中,或者根本不需要。如果JSON是一个事物列表,那么通过库提供的回调一次处理一个事物。你知道吗

相关问题 更多 >