首页 > 编程语言 > 详细

Python使用ijson 解析超大json 文件

时间:2020-09-15 17:03:59      阅读:433      评论:0      收藏:0      [点我收藏+]

背景

使用json 模块解析json需要单次全部载入所有内容,在文件过大时已经不能处理。所以想是否有流式解析json的库可用
稍微搜索了一下找到了ijson

安装ijson

ijson 官方介绍
如其他python 库一样可直接使用pip 直接安装 pip install ijson
正如文档 Backends 中提及的 ijson 提供了几个版本的解析实现

  • yajl2_c
  • yajl2_cffi
  • yajl2
  • yajl
  • python
    默认应该是python 版本,python版本比较慢,解析一个2G 左右的json 文件 本机需要 27 分钟
    其中最快的是 yajl2_c yajl 是一个json库
    windows 上需要手动编译,使用CMake 构建,很容易编译
  • 下载 yajl 源代码解压 yajl-2.1.0.zip
  • 打开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 形式返回。这也能让解析速度更快一些。

Python使用ijson 解析超大json 文件

原文:https://www.cnblogs.com/jiyihuizhongxing/p/13673414.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!