今天天是 2020 年的最后一天了, 在送走多灾多难的 2020 之际, 首先祝愿各位小伙伴新年快乐! 另外, 大家都开始忙于年度总结, 虫虫也来给大家总结一下程序届一些总结. 现在程序届最火的是什么? 当然莫过于 Python 语言了, 那我们就来总结一下 2020 年的 Python 生态圈, 看看今年新生并且最流行的类库.
1Rich
开发终端命令行应用大多数人都是默认黑底白字了事, 或者自己费劲拼 ASCI 代码. 有了这个库 Rich, 几行代码帮你搞定颜色和样式, 同时还可以制作进度条, 表情, 边框以及一些复杂的表格.
Rich 是一个 Python 库, 可以为 Python 应用在终端中提供富文本和精美格式. 可以很容易的在终端输出添加各种颜色和不同风格. Rich 还可以绘制漂亮的表格, 进度条, Markdown 格式, 突出显示语法的源代码及回溯等等, 不胜枚举.
Rich 支持跨平台, 适用于 Windows,Linux 和 OS X. 真彩色 / 表情符号与新版 Windows 终端一起使用, Windows 的经典终端仅限 8 种颜色. Rich 还可以无缝配合 Jupyter Notebook 使用, 而无需其他配置.
托管仓库: GitHub:/willmcgugan/rich
Commit 数据:
GitHub 星级: 18.7K
Diagrams
为了便于使用, 一般要使用 GUI 工具来显示应用内容和交互, 比如绘制一个架构图. 而 Diagrams 则无需任何设计工具, 直接在 Python 代码中绘制系统架构图. 多系统图标对于多个云提供商(包括 AWS,Azure,GCP 等). 只需几行代码就能创建一个精美的架构图.
基于代码的图表, 还可以通过标准 Git 版本控制来跟踪更改.
托管仓库: GitHub:/ mingrammer/diagrams
Commit 数据:
GitHub 星级: 11.6 K
PyTorch Lightning
每一种提高数据科学团队生产力的工具都很有价值. 没有理由让从事数据科学项目的人每次都重新发明轮子, 反复思考如何更好地组织其项目中的代码, 或者使用更高级别的抽象的贸易潜力控制.
PyTorch Lightning 是一个对 PyTorch 项目的轻巧打包项目, 用于高性能 AI 研究. 通过将科学与工程脱钩来帮助提高生产力. 从某种意义上说, 它使代码更简洁, 对比更像是基于 TensorFlow 的 keras. 但是 Lightning 更加开放, 可以支持让用户访问 PyTorch 所有常用的 API.
PyTorch Lightning 库可帮助团队利用围绕组织的软件工程的良好实践并明确组件的职责, 以构建可轻松扩展以在多个 GPU,TPU 和 CPU 上进行训练的高质量代码. 比如在新冠大流行的今天, PyTorch Lightning 可以帮用户大家快速的应用防止疫情的控制:
实例 -- 口罩佩戴检查:
实例 -- 肺部 MRT 图片处理:
托管仓库: GitHub:/ PyTorchLightning/PyTorch-lightning
Commit 数据:
GitHub 星级: 11.1 K
Typer
Typer 是另一个帮助我们开发终端命令行应用的库, 由 FastAPI 开发商 tiangolo 开发. 可以利用 Python 3.6 + 的类型提示功能来编写命令行界面. 除了确保代码已正确记录之外, 还可以轻松进行 CLI 界面的验证. 通过使用类型提示, 可以在 Python 编辑器 (如 VSCode) 中获得自动补全功能, 这将提高您的生产率.
为了增强其功能, Typer 依赖著名的 Click 库. Click 经过了严格的测试和实践以及丰富社区和插件, 这些在 Typer 中都可以简单 "拿来" 使用.
Typer 提供完善的文档, 可以帮我们快速上手开发.
托管仓库: GitHub:/tiangolo/typer
Commit 数据:
GitHub 星级: 3.6K
Dear PyGui
虽然, 根据前面几个类库帮助, 可以让终端 App 很漂亮. 但是很多时候光终端程序还是远远不够的, 需要一个真正的 GUI. 那么, 接下来隆重出场的就是一个 Gui 类库 Dear PyGui.Dear PyGui 是对著名的 C++ GUI 项目 Dear ImGui 的 Python 打包.
Dear PyGui 利用了在视频游戏中流行的即时模式, 动态 GUI 是逐帧独立绘制的, 无需保留任何数据. 这是它与其他 Python GUI 框架的不同点和优势. 它具有很高的性能, 并使用计算机的 GPU 来促进构建高度动态的界面, 这在工程, 仿真, 游戏或数据科学应用程序中非常实用.
Dear PyGui 易学易用, 并且支持多平台开发, 可以在 Windows 10(DirectX 11),Linux(OpenGL 3)和 MacOS(Metal)上运行.
托管仓库: GitHub:/hoffstadt/DearPyGui
Commit 数据:
GitHub 星级: 3.4 K
Hydra
在进行机器学习项目的研究和实验时, 总是有无数的设置可以尝试. 在非平凡的应用程序中, 配置管理会变得相当复杂, 非常快. 有一种结构化的方式来处理这种复杂性不是很好吗?
Hydra 代号九头蛇, 就是这样一种工具. 九头蛇由脸谱 (Facebook) 开源实验室推出, 用于优雅配置复杂应用程序的框架, 可让我们以可组合的方式构建配置, 并从命令行或配置文件覆盖某些部分. 假设有一个正在试验的模型的基本体系结构, 以及它的多种变体. 使用 Hydra, 可以定义基本配置, 然后运行多个作业, 并进行更改:
python train_model.py variation=option_a,option_b
├── variation
│ ├── option_a.YAML
│ └── option_b.YAML
├── base.YAML
└── train_model.py
Hydra 同源的一个项目 OmegaConf 则为分层配置系统的基础提供了一致的 API, 并支持 YAML, 配置文件, 对象和 CLI 参数等不同来源.
托管仓库: GitHub/facebookresearch/hydra
Commit 数据:
GitHub 星级: 3.4 K
Hummingbird
深度学习的发展又带活了 AI 和机器学习, 诸如 PyTorch 这样的框架正在以惊人的速度发展, 并且硬件设备已经过优化, 可以更快地运行 TensorFlow 计算并降低功耗.. 但是并非所有的机器学习都是深度学习. 通常, 机器学习模型由更传统的算法 (例如 Random Forest) 组成, 或者使用流行的 LightGBM 和 XGBoost 之类的梯度提升方法.
Hummingbird 库创建就是为了解决模型新老更替的问题, 微软开源的这个新库可以将训练有素的传统 ML 模型编译为 TensorFlow 计算. 从而无需重新设计模型就可以在 TF 中使用以前积累的模型.
截止当前, Hummingbird 支持 PyTorch,TorchScript,ONNX 和 TVM, 以及各种 ML 模型和矢量化器的转换. 其内建的 API 也与 Sklearn paradigm 非常相似, 后者使可以重用现有代码, 但将实现更改为 Hummingbird 生成的代码.
托管仓库: GitHub:microsoft/hummingbird
Commit 数据:
GitHub 星级: 2 K
scalene
随着 Python 库生态系统变得越来越复杂, 充满了很多依赖 C 扩展和多线程代码的代码. 在衡量性能时, 这成为一个问题. 因为 CPython 内置的探查器无法正确处理多线程代码.
为了解决这个痛点, 出现了 Scalene.Scalene 是用于 Python 脚本的 CPU 和内存探查器, 能够正确处理多线程代码并区分运行 Python 和本机代码所花费的时间. 无需修改代码, 从命令行使用 scalene 运行脚本, 它将为自动生成文本或 html 报告, 显示代码每一行的 CPU 和内存使用情况.
托管仓库: GitHub: emeryberger/scalene
Commit 数据:
GitHub 星级: 3.2 K
HiPlot
几乎每个数据科学家在其工作中都会遇到要处理高维数据的任务. 不幸的是, 人脑没有足够的连线直观地处理这种数据, 而必须借助其他辅助处理.
由 Facebook 开源的 HiPlot, 可使用并行绘图和其他图形方式来表示信息, 从而帮助发现高维数据中的相关性和模式, 实现对高维数据的可视化和过滤.
HiPlot 是交互式的, 可扩展的, 支持从标准 JupyterNotebook 或通过其自己的服务器使用它.
托管仓库: GitHub: facebookresearch/hiplot
Commit 数据:
GitHub 星级: 1.7 K
PrettyErrors
知道了性能瓶颈, 那就要解决深层次的原因, 或许是逻辑上的问题, 或许是有异常代码.
PrettyErrors 只做一件事并且做得很好. 在支持彩色输出的终端中, 它将隐秘的堆栈轨迹转换为更适合用微弱的人眼解析的东西. 让我们无需扩充几个大显示器, 满屏幕来查找异常.
托管仓库: GitHub:/ onelivesleft/PrettyErrors
Commit 数据:
GitHub 星级: 1.4 K
总结:
本文我们列举了 Python 生态圈中, 比较热门流行的 Python 类库. 但是这只是 Python 庞大生态世界的冰山一脚, 而且覆盖了各行各业的应用, 可能大家关注领域不同, 如果你要更好的 Python 应用可以回复一起分享给逛到小伙伴们.
来源: http://developer.51cto.com/art/202012/638279.htm