Python使⽤ijson解析超⼤json⽂件
背景
使⽤json 模块解析json需要单次全部载⼊所有内容,在⽂件过⼤时已经不能处理。所以想是否有流式解析json的库可⽤稍微搜索了⼀下到了ijson
安装ijson
ijson
如其他python 库⼀样可直接使⽤pip 直接安装pip install ijson
正如⽂档中提及的 ijson 提供了⼏个版本的解析实现
yajl2_c
yajl2_cffi
yajl2
yajl
python
默认应该是python 版本,python版本⽐较慢,解析⼀个2G 左右的json ⽂件本机需要 27 分钟
其中最快的是 yajl2_c 是⼀个json库
windows 上需要⼿动编译,使⽤CMake 构建,很容易编译
下载 yajl 源代码解压
打开cmake GUI source code 选择解压的源代码⽂件夹,build the binaries 新建⼀个build ⽂件夹
点击 Configure 选择Vs版本,其他默认即可
点击Generate 即可⽣成解决⽅法,打开解决⽅案,选择Release⽣成解决⽅案
在build\yajl-2.1.0\lib\Release⽂件夹中即可到⽣成的动态库
拷贝动态库到可被PTHA到的⽂件夹中
使⽤pip 安装 jajl-py pip install yajl-py
之后就可以使⽤了,但是并不能导⼊yajl2_c
import ijson.backends.yajl2_cffi as ijson
使⽤yajl2_cffi 确实会⽐python 版本快⼀些同样的⽂件只需要17 分钟
使⽤
with open(filePath, 'r') as load_f:
objects = ijson.items(load_f, 'traceEvents.item',use_float=True)
for v in objects:
pass
使⽤use_float选项会将⾮整数以float 形式返回。这也能让解析速度更快⼀些。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论