做兼职写小说网站,自助微信小程序开发教程,关键词优化助手,陕西省新安康市公司使用JSON越多, 你就越有可能遇到JSON编码或解码瓶颈。Python的内置库也不错, 但是还有多个更快的JSON库可用: 如何选择使用哪一个呢?事实是#xff0c;没有一个正确的答案#xff0c;没有一个最快的JSON库来超越其他所有库:一个“快速的JSON库”对不同的人意味着不同的东西没有一个正确的答案没有一个最快的JSON库来超越其他所有库:一个“快速的JSON库”对不同的人意味着不同的东西因为它们的使用模式不同。速度并不是一切——你可能还会关心其他一些事情比如安全性和可定制性。因此为了帮助你根据需要选择最快的JSON库我想在这里分享一下我为Python选择一个快速JSON库所经历的过程。你可以使用这个过程来选择最适合你的特殊需要的库:确保确实有问题需要用到JSON库来解决。定义基准。根据附加要求来过滤。对剩下的候选者进行基准测试。步骤1: 你确实需要一个新的JSON 库吗?使用JSON并不意味着它就是一个相关的瓶颈。在考虑使用哪个JSON库之前你需要一些证据来表明Python的内置JSON库确实在特定应用程序中存在问题。在我的例子中我从我的原因日志库Eliot(causal logging library Eliot)的基准测试中学到了这一点它表明JSON编码占用了大约25%的用于生成消息的CPU时间。我能得到的最大加速是比原先运行快33%(如果JSON编码时间变为零)但那是一个足够大的时间块使用最快的JSON库会让这个时间块减小到最低。步骤 2: 定义基准如果你查看各种JSON库的基准页面你会发现它们都会讨论如何处理各种不同的消息。然而这些消息并不一定与你的使用相关。其他人会经常测量非常大型消息但在我的例子中我只关心小型消息。所以你想要提出一些符合你的特定使用模式的措施:你关心编码、解码还是两者都关心?你使用的是小型消息还是大型消息?典型的消息是什么样的?在我的例子中我主要关心的是编码小型消息即由Eliot生成的日志消息的特定结构。基于一些真实的日志我整理出了以下示例消息:步骤 3: 根据附加要求来过滤性能并不是一切——你可能还会关心其他一些事情。在我的例子中:安全性/抗崩溃性:日志消息可以包含来自不可信源的数据。如果JSON编码器在不良数据上崩溃这对可靠性或安全性都不好。自定义编码: Eliot支持自定义JSON编码因此您可以序列化其他类型的Python对象。有些JSON库支持这一点有些则不支持。跨平台: 运行在Linux、macOS和Windows上。维护: 我不想依赖一个没有得到积极支持的库。我考虑的库有orjson、rapidjson、ujson和hyperjson。我根据上面的标准过滤掉了其中的一些:ujson有很多关于崩溃的bug即使那些已经修复的崩溃也并不总是可用因为自2016年以来就没有再发布过新版本。hyperjson只有针对macOS的包而且总体看起来也相当不成熟。步骤 4: 基准测试最后的两个竞争者是rapidjson和orjson。我运行了以下基准测试:结果如下:即使需要额外的Unicode解码orjson也是最快的(对于这个特定的基准测试!)。与往常一样我也需要权衡。orjson的用户比rapidjson要少(比较orjson PyPI stats和rapidjson PyPI stats)并且它也没有Conda包所以我必须自己为Conda-forge对它进行打包。但是它确实要快得多。需求为大你应该使用orjson吗? 不一定。你可能有不同的要求你的基准测试也可能不同——例如你可能需要解码大型文件。关键点是过程: 找出你的特定要求比如性能以及其他方面然后选择最适合你的需求的库。感谢您的阅读以上就是怎么样为Python选择一个更快的JSON库你学会了吗更多有趣有料的Python实战项目尽在马哥教育官网敬请关注!马哥教育www.magedu.com