2020年10款优秀的Python第三方库,看看有你中意的吗?
作者:Jackpop 发布时间:2021-01-03 10:35:08
相对于numpy、TensorFlow、pandas这些已经经过多年维护、迭代,对于大多数Python开发者耳熟能详的库不同。
今天要给大家介绍的是诞生于2020年的新鲜Python库,而且,本文介绍的这10个Python库一直都受到非常好的维护。
废话不多说,下面开始本文的正式内容!
1. Typer
或许,你并非经常编写 CLI 应用程序,但是当你编写时,有可能会遇到很多障碍。
继FastAPI的巨大成功之后,tiangolo用同样的原则为我们带来了Typer[1]:一个新的库,它能让你利用Python 3.6+的类型提示功能来编写命令行接口。
这个设计确实让Typer脱颖而出。除了确保你的代码是正确的文档,你还可以通过小小的改动得到一个带有验证的CLI接口。
而且通过使用类型提示,你可以在你的Python编辑器中获得自动完成(比如VSCode),这将提高你的工作效率。
为了增强它的功能,Typer在另外一款非常知名的CLI工具Click的基础之上做了很多优化和改善。这意味着它可以利用它的所有优点、社区和插件,同时以较少的模板代码开始简单的工作。
2. Rich
顺着CLI的话题,在使用终端时,往往是单调的白色,这非常不利于分辨和阅读。
你想给你的终端输出添加色彩和与众不同的风格吗?打印复杂的表格?显示漂亮的进度条?Markdown?Emojis?
Rich[2]都能满足你的要求。
请看示例截图,了解一下它的功能。
3. Dear PyGui
虽然,正如我们所看到的,终端应用可以很好看,但有时这还不够,你需要一个真正的GUI。
为此,Dear PyGui[3]应运而生,它是流行的Dear ImGui C++项目的Python移植。
Dear PyGui利用了在视频游戏中流行的所谓即时模式范式。
这意味着动态GUI是一帧一帧独立绘制的,不需要持久化任何数据。这使得这个工具与其他Python GUI框架有着本质上的区别。
它具有很高的性能,并使用计算机的GPU来促进高动态界面的构建,这在工程、模拟、游戏或数据科学应用中是经常需要的。
4. PrettyErrors
这是一个让你觉得:"怎么以前没有人想到它?"的Python库。
PrettyErrors[4]只做了一件事,而且做得很好。
在支持彩色输出的终端中,它将混乱的报错信息转化为更适合我们人类的眼睛来解析的东西。
不再苦苦扫描整个屏幕,定位报错信息......现在你可以一目了然地找到它。
5. Diagrams
我们程序员喜欢解决问题和编码。
但有时,作为非常需要的项目文档的一部分,我们需要向其他同事解释复杂的架构设计。
传统上,我们已经求助于GUI工具,我们可以在图表和可视化上下功夫,把它放在演示和文档中。
但这不是唯一的方式。
Diagrams[5]可以让你不用任何设计工具,直接在Python代码中绘制云系统架构。
只需要几行代码,就可以绘制一幅亮眼的架构图。
6. Hydra and OmegaConf
在做机器学习项目的研究和实验时,总有无数的设置需要尝试。
在一些应用中,配置管理变得非常复杂。如果有一种结构化的方式来处理这种复杂性,会极大的提高开发效率。
Hydra[6]是一个工具,它允许你以可组合的方式构建配置,并从命令行或配置文件中覆盖某些部分。
python train_model.py variation=option_a,option_b
├── variation
│ ├── option_a.yaml
│ └── option_b.yaml
├── base.yaml
└── train_model.py
另一款工具,OmegaConf[7]为分层配置系统的基础提供了一致的API,支持YAML、配置文件、对象和CLI参数等不同来源。
7. PyTorch Lightning
每一个能够提高数据科学团队生产力的工具都是价值连城的。
没有理由让在数据科学项目中工作的人每次都要重新发明轮子,反复思考如何更好地组织项目中的代码,使用一些不太好维护的 "PyTorch boilerplate",或者用潜在的控制权换取使用更高级别的抽象。
Lightning[8]通过将科学与工程脱钩,有助于提高生产力。它有点像TensorFlow的Keras,在某种意义上,它使你的代码更加简洁。
然而,它并没有夺走你的控制权。它仍然是PyTorch,你可以使用所有常用的API。
这个库可以帮助团队利用软件工程的良好实践,围绕组件的组织和明确的责任,构建高质量的代码,可以轻松地扩展到多个GPU、TPU和CPU上进行训练。
这个库可以帮助数据科学团队中那些初级成员产生更好的结果,同时,更有经验的成员也会喜欢它,因为在不放弃控制权的前提下,提高了整体生产力。
8. Hummingbird
不是所有的机器学习都是深度学习。很多时候,你的模型由scikit-learn中实现的比较传统的算法组成(比如随机森林),或者你使用梯度提升方法,比如流行的LightGBM和XGBoost。
然而,在深度学习领域正在发生很多变化。像PyTorch这样的框架正在以令人窒息的速度前进,硬件设备也在优化,以更快的速度和更低的功耗运行张量计算。如果我们能够利用这些工作,更快、更高效地运行我们的传统方法,岂不美哉?
这就是Hummingbird[9]的用武之地。
微软的这个新库可以将你训练好的传统ML模型编译成张量计算。
这很好,因为它可以让你摆脱重新设计模型的需要。
截至目前,Hummingbird支持转换到PyTorch、TorchScript、ONNX和TVM,以及各种ML模型和矢量器。
9. HiPlot
几乎每一位数据科学家在其职业生涯的某个阶段都曾处理过高维数据。
不幸的是,人类的大脑并没有足够的能力直观地处理这种数据,所以我们必须借助其他技术。
今年年初,Facebook发布了HiPlot[10],这是一个帮助发现高维数据中的相关性和模式的库,使用平行图和其他图形方式来表示信息。在他们的发布博文中解释了这个概念,但基本上是一种很好的、方便的可视化和过滤高维数据的方法。
HiPlot是交互式的,可扩展的,你可以从你的标准Jupyter Notebooks或通过它自己的服务器使用它。
10. Scalene
随着Python库的生态系统越来越复杂,我们发现自己编写了越来越多的依赖于C扩展和多线程代码的代码。
在对比性能时,这就成了一个问题,因为CPython内置的剖析工具不能正确处理多线程和本地代码。
这时,Scalene[11]就来救场了。
Scalene是一个针对Python脚本的CPU和内存剖析工具,它能够正确处理多线程代码,并区分运行Python和本地代码的时间。
你不需要修改你的代码,你只需要用scalene从命令行运行你的脚本,它就会为你生成一个文本或HTML报告,显示每行代码的CPU和内存使用情况。
来源:https://developer.51cto.com/art/202101/640383.htm


猜你喜欢
- 1. 不使用全局变量,适当封装2. 兼容性还行~~3. 代码短,可读性凑合~~呵呵~~~~~a. 拖动效果,16行JS<!DOCTYP
- 一、数据无量纲化处理 (热力图)1.数据无量纲化处理(仅介绍本文用到的方法):min-max归一化该方法是对原始数据进行线性变换,
- 一、引入必要文件下载地址:(https://github.com/nghuuphuoc/bootstrapvalidator/archive
- Flask 环境配置你的应用程序可能需要大量的软件包才能正常的工作。如果都不需要 Flask 包的话,你有可能读错了教程。当应用程序运行的时
- 本项目是利用五年左右的世界地震数据,通过python的pandas库、matplotlib库、basemap库等进行数据可视化,绘制出地震散
- 很多SQL Server程序员对子查询(subqueries)的使用感到困惑,尤其对于嵌套子查询(即子查询中包含一个子查询)。现在,就让我们
- <?xml version="1.0" encoding="utf-8&
- 1. 箭头函数的使用ES6 中新增了使用箭头=>来定义函数表达式的方法。很多情况下,箭头函数和函数表达式创建的函数并无区别,只有写法上
- 表单验证是WEB开发中经常遇到的问题,我们以前常见的做法是:在客户端对表单域进行内容的检查,看是否是满足一定的要求或满足一定的结构,比如:是
- 实例如下所示:>>> import pandas as pd>>> import numpy as np
- 请先看看以下演示中的图案文字。这可不是图片效果,而是用CSS滤镜中的Chroma() 语句做成的文本文
- 1.准备工作: 准备相关的软件(Eclipse除外,开源软件可以从官网下载)<1>.Microsoft SQL server 2
- 1. 用Dreamweaver 4.0轻松设计会自动弹性调整的网页 首先需要保证的是你的页面内容采用了表格的格式,然后打开你要编辑的页面,按
- 本文实例讲述了mysql简单实现查询结果添加序列号的方法。分享给大家供大家参考,具体如下:第一种方法:select (@i:=@i+1) a
- 背景我们经常调侃程序员每天都在写bug,这确实是事实,没有测出bug不代表程序就真的不存在问题。传统的代码review、静态分析、人工测试和
- pyd文件生成安装easycython库pip install easycythontest.pydef test(): pri
- 在面向对象的编程中,很多语言都支持函数重载,能根据函数传递的不同个数、类型的参数来做不同的操作,JS对它却不支持,需要我们额外做些小动作。在
- Git修改已提交的commit注释两种情况:修改最后一次注释1、在命令行输入如下命令,然后回车:git commit --amend2、在命
- 目录Python的引入变量的引入为什么要有变量定义变量常量引入常量池引入Python解释器Python变量存储机制Python垃圾回收机制引
- 或许马上,或许几年之后,但是有迹象显示IE浏览器占统治地位的时代即将结束。在数据分析公司Net Applications的排名中,IE的市场