python中json的序列化与反序列化有很多库,具体选择使用哪一个,或者哪一个速度更快呢?

先上结果

json序列化与反序列化速度对比(按总时间排序:测试数据100 * 10000)

ujson 序列化: 2.084 反序列化: 1.157 总时间: 3.241
yajl 序列化: 1.910 反序列化: 1.970 总时间: 3.880
cjson 序列化: 3.305 反序列化: 1.328 总时间: 4.632
simplejson 序列化: 10.279 反序列化: 4.658 总时间: 14.937
stdlib json 序列化: 7.013 反序列化: 8.594 总时间: 15.607

其中,除了stdlib json也就是内置的json.dumps外,其他都是第三方包。数据量较少时,速度几乎没有区别,无所谓选择哪一个。数据量大的情况下,ujson的总体表现最好,但序列化不如yajl

而django中,如果只是response一个json对象,可以直接使用JsonResonse

用法为:

>>> from django.http import JsonResponse
>>> response = JsonResponse({'foo': 'bar'})
>>> response.content
'{"foo": "bar"}'

默认采用内置方式进json格式化后返回。如果数据不多,着实方便(django1.7引入)

测试代码

import time
import pickle
import yajltry:import cjson
except ImportError:cjson = None
try:import simplejson
except ImportError:simplejson = None
try:import ujson
except ImportError:ujson = Nonetry:import json
except ImportError:json = Nonedefault_data = {"name": "Foo","type": "Bar","count": 1,"info": {"x": 203,"y": 102, }, }def ttt(f, data=None, x=100 * 10000):start = time.time()while x:x -= 1foo = f(data)return time.time() - startdef profile(serial, deserial, data=None, x=100 * 10000):if not data:data = default_datasquashed = serial(data)return (ttt(serial, data, x), ttt(deserial, squashed, x))def test(serial, deserial, data=None):if not data:data = default_dataassert deserial(serial(data)) == data
'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:725638078
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''contenders = [('yajl', (yajl.Encoder().encode, yajl.Decoder().decode)),
]
if cjson:contenders.append(('cjson', (cjson.encode, cjson.decode)))
if simplejson:contenders.append(('simplejson', (simplejson.dumps, simplejson.loads)))
if json:contenders.append(('stdlib json', (json.dumps, json.loads)))
if ujson:contenders.append(('ujson', (ujson.dumps, ujson.loads)))for name, args in contenders:test(*args)x, y = profile(*args)print("%-11s serialize: %0.3f  deserialize: %0.3f  total: %0.3f" % (name, x, y, x + y))

python中5个json库的速度对比,你猜对了吗相关推荐

  1. python中5个json库的速度对比

    python中json的序列化与反序列化有很多库,具体选择使用哪一个,或者哪一个速度更快呢? 先上结果 json序列化与反序列化速度对比(按总时间排序:测试数据100 * 10000) ujson 序 ...

  2. python json操作_4个小窍门,让你在Python中高效使用JSON

    字典和列表是 Python的两种数据类型,也是用来处理JSON的完美工具.本文将主要分享以下内容: 如何载入.编写JSON? 如何在命令行上优化.校验JSON? 如何通过使用JMESPath对JSON ...

  3. python中的h5py开源库的使用

    python中的h5py开源库的使用(9-20190129) 文章目录: 一.h5py模块介绍 二.h5py模块使用 1.h5py接口简单介绍 2.h5py的使用样例 一.h5py模块介绍 本文只是简 ...

  4. python中prettytable模块_Python库: PrettyTable 模块

    一 PrettyTable简介 PrettyTable是python中的一个第三方库,可用来生成美观的ASCII格式的表格: 二 PrettyTable安装 使用PIP即可十分方便的安装PrettyT ...

  5. python web开发第三方库_以下属于Python中Web开发框架第三方库的是__________

    以下属于Python中Web开发框架第三方库的是__________ 答:Django 关于为何要敬业乐群,下列说法错误的是?() 答:敬业乐群可以作为提升我们学习.工作的效率和成果,乃至提升我们生命 ...

  6. python中好用的库(一)

    python中好用的库(一) 时间库-arrow 使用背景 日期时间处理在实际应用场景中无处不在,所以这也成了编程语言中必不可少的模块,Python 也不例外.但是,你知道在Python中有多少个相关 ...

  7. Python中如何安装pip库

    Python中如何安装pip库 新手第一次写博客(紧脏~) 建议先更新到最新的pip 官网附上www.python.org(官网上的东西是最基础也是最全的,还有Python基础教程!!!巴适得很) 我 ...

  8. Python中常用的第三方库

    Python中常用的第三方库 库名 用途 numpy n维数据表示和运算 matplotlib 二维数据可视化 numpy n维数据表示和运算 pil 图像处理 scikit-learn 机器学习和数 ...

  9. 在Python中有效使用JSON的4个技巧

    Python has two data types that, together, form the perfect tool for working with JSON: dictionaries ...

最新文章

  1. html5初探ppt,HTML5---HTML5初探151019解析.ppt
  2. 大话android 进程通信之AIDL
  3. ubuntu15.10安装wireshark
  4. delphi 回调函数例子 用函数过程作为参数
  5. 腾讯旗下网站的很多URL都包含“cgi-bin”,是什么意思?他们后台用什么语言?...
  6. R语言XML格式数据导入与处理
  7. react学习(49)--参数判定
  8. CentOS下rpm命令详解
  9. python能做什么工作-谁适合学Python?学了Python可以做什么工作?
  10. IEnumerable.Select和SelectMany的区别
  11. JavaScript学习心得04
  12. 现代工程制图及计算机辅助绘图答案,现代工程制图(附习题集第2版高等学校应用型特色规划教材)...
  13. C# 单个按钮实现暂停或继续
  14. Vue2项目引入mars3d
  15. 使用VCS 仿真后,通过DVE 观察波形,多维数据显示not load问题及解决方案
  16. 深入理解Android系统多用户
  17. edge浏览器打开html文件路径被拆分,Win10默认浏览器被强制修改为Edge的两种解决方法...
  18. zipJS 前端压缩使用
  19. 用Python分析《阿凡达·水之道》的豆瓣短评
  20. NVIDIA相关资料(一)——Deepstream相关知识

热门文章

  1. build.gradle代码
  2. 130.ssm项目中添加日志 log4j
  3. 2018-04-12 Linux学习
  4. Microsoft加入量子计算的竞争
  5. c语言中数组名a和a详细介绍
  6. IPSec ××× 在企业网中的应用
  7. Hibernate查询视图返回null问题说明及解决办法
  8. CAS SSO实践中,目前解决的问题和有待解决的问题
  9. 输入法图标也会莫名其妙地丢失?
  10. 网管日志-06.07.12