【我們為什麼挑選這篇文章】Python 開源、易讀、易上手的特色,成為許多程式學習者入門程式的首選語言,在開發市場和教育市場具有很大的潛力。網路上 Python 的模組百百種,剛立下新年學習目標的你,得要找到最適合你開發需求的工具呀!(責任編輯:賴佩萱)

本文經 AI 新媒體量子位(公眾號 ID:QbitAI)授權轉載,轉載請連繫出處

作者:量子位

上榜的有 FastAPI 的升級版 Typer、將 CLI 變成彩色的 Rich、基於 GUI 框架的 Dear PyGui、還有精簡報錯訊息的 PrettyErrors……總有一款是你想要的。

下面就讓我們一起來看看吧!

1. Typer

Typer 跟 FastAPI 的原理相同,都是 Python 上用來構建 API 服務的一個高性能框架。

它是 FastAPI 的升級版,不僅能夠準確地記錄程式碼,還能夠輕鬆地進行 CLI 驗證。

Typer 易於學習和使用,不需要用戶閱讀複雜的教學文檔即可上手。支援編輯器(如VSCode)程式碼自動補全,提高開發人員的開發效率,減少 bug 的數量。

其次,Typer 還能配合命令行神器 Click 使用,就可以利用 Click 的優點和擴充軟體,實現更複雜的功能。

傳送門:https://github.com/tiangolo/typer

2. Rich

誰規定 CLI 界面一定得是黑白的?它也可以是彩色的。

Rich API 不僅能夠在終端輸出提供豐富的彩色文本和精美的格式,還提供了精美的表格、進度條、編輯器、追蹤器、語法高亮等。如下圖所示:

它還可以安裝在 Python REPL 上,所有的數據結構都可以漂亮地輸出或標註。

總而言之,它是彩色的、漂亮的、強大的。

Rich 兼容性也不錯,適用於 Linux、Mac 和 Windows 等多種系統。真彩色/表情符號可與新的 Windows 終端一起使用。

但是請注意,Rich 必須要 Python 3.6.1 或以上版本。

傳送門:https://github.com/willmcgugan/rich

3. Dear PyGui

如上所示,雖然終端應用程式可以做成很漂亮的樣子。但是,你可能還需要一個真正的 GUI。

Dear PyGui 是一個便於使用、功能強大的 Python GUI 框架。但是它與其他的 Python GUI 卻有著根本上的不同。

它使用了即時模式範式和計算機的 GPU 來實現動態界面。即時模式範式在影音遊戲中非常流行,這意味著它的動態 GUI 不需要保留任何數據,而是獨立繪製的。同時,它還使用 GPU 來建構動態界面。

Dear PyGui 還可以繪圖、創建主題、創建 2D 遊戲,還擁有一些小工具,比如說內置文檔、日誌記錄、源代碼查看器之類的,這些小工具可以協助 App 的開發。

支持它的系統有:Windows 10(DirectX 11)、Linux(OpenGL 3)和 macOS(Metal)等。

傳送門:https://github.com/hoffstadt/DearPyGui

4. PrettyErrors

PrettyErrors 是一個精簡 Python 錯誤訊息的工具,特點是界面十分簡潔友好。

它最顯著的功能是支持在終端進行彩色輸出,標註出文件棧蹤跡,發現錯誤訊息,過濾掉冗餘信​訊息,提取出關鍵部分,並且進行彩色標註,從而提高開發者的效率。

而且它可以不用安裝,直接被導入項目中使用,但是需要先配置一些參數,其導入和配置的參數如下:

傳送門:https://github.com/onelivesleft/PrettyErrors

5. Diagrams

工程師在寫程式的時候,有時候需要跟同事解釋他設計的程式代碼之間複雜的結構關係,然而這不是一兩句話能說清楚的,需要畫表或者做脈絡圖。

一般情況下,工程師使用 GUI 工具處理圖表,並將文稿進行可視化處理,但是還有更好的方法,比如說​​使用 Diagrams 庫。

Diagrams 讓不需要任何設計類工具,直接在 Python 代碼中繪製雲系統結構。它們的圖標來自多家雲端服務商,包括 AWS、Azure、GCP 等。

僅需幾行程式碼,就可以簡單地創造出箭頭符號和結構圖。

由於它使用 Graphviz 來渲染圖,所以還需要先安裝好 Graphviz。

傳送門:https://github.com/mingrammer/diagrams

6. Hydra and OmegaConf

在做機器學習專案的時候,需要做一大堆的環境配置工作。因此,在一些複雜的應用程序中,配置管理工作也相應變得複雜。

Hydra可以使配置工作變得簡單。它能夠從命令行或者配置文件中覆蓋部分出來,無需維護相似的配置文件,用組合的方式進行配置,從而加快了實驗運行速度。

Hydra 兼容性強,擁有含擴充的結構,能夠很好地與開發者的操作文件融合。它的插件還可以實現直接通過命令行,就把程式碼發佈到 AWS 或者其他雲端系統。

Hydra 也離不開 OmegaConf,兩者關係密不可分,OmegaConf 為 Hydra 的分層配置系統提供了協同的 API,二者協同運作可支持 YAML、配置文件、對象、CLI 參數等。

傳送門:https://github.com/facebookresearch/hydrahttps://github.com/omry/omegaconf

7. PyTorch Lightning

PyTorch Lightning 也是 Facebook 的一個研究成果。它是一個輕巧的 PyTorch 包裝器,用於高性能 AI 研究,其最重要的特徵是能夠解析 PyTorch 程式碼,讓程式碼研究成分和工程成分的分離。

 

它的擴展模型可以在任何硬體(CPU、GPU、TPU)上運行,且容易被複製,刪除了大量的文件樣本,保持了自身的靈活性,運行速度快。

Lightning 能夠使 DL / ML 研究的 40 多個部分實現自動化,例如 GPU 訓練、分佈式GPU(集群)訓練、TPU 訓練等等……

因為 Lightning 可以將文件自動導出到 ONNX 或 TorchScript,所以它適用於進行快速推理的 AI 研究員、BERT 或者自監督學習的研究團隊等。

傳送門:https://github.com/PyTorchLightning/PyTorch-lightning

8. Hummingbird

Hummingbird 是微軟的一項研究成果,它能夠將已經訓練好的 ML 模型彙編成張量計算,從而不需要設計新的模型。

還允許用戶使用神經網路框架(例如 PyTorch)來加速傳統的 ML 模型。

它的推理 API 跟 sklearn 範例十分相似,都可以重複使用現有的代碼,但是它是用Hummingbird 生成的程式碼去實現的。

Hummingbird 還在 Sklearn API 之後提供了一個方便的統一推理 API。這樣就可以將Sklearn 模型與 Hummingbird 生成的模型互換,而無需更改推理程式碼。

它之所以被重點關注,還因為它能夠支持多種多樣的模型和格式。

到目前為止,Hummingbird 支持 PyTorch、TorchScript、ONNX 和 TVM 等各種 ML模型。

傳送門:https://github.com/microsoft/hummingbird

9. HiPlot

由於 ML 模型變得越來越複雜,還有很多超參數,於是就需要用到 HiPlot。HiPlot 是今年 3 月 Facebook 發行的一個庫,主要用於處理高維數據。

Facebook AI 透過幾十個超參數和 10 萬多個實驗,利用 HiPlot,來分析深度神經網路。

它是用平行圖和其他的圖像方式,幫助 AI 研究者發現高維數據的相關性和模型,是一款輕​​巧的交互式可視化工具。

HiPlot 與其他可視化工具相比,有其特有的優點:

首先,它的互動性強,因為平行圖是交互式的,所以能夠滿足多種情況下的圖像可視化。

其次,它簡單易用,可以透過 IPython Notebook 或者通過帶有「hiplot」命令的服務直接使用。

它還有具有可擴展性。默認情況下,HiPlot 的 Web 服務可以解析 CSV 或 JSON 文件,還可以為其提供自定義 Python 解析器,將實驗轉換為 HiPlot 實驗。

傳送門:https://github.com/facebookresearch/hiplot

10. Scalene

Scalene 是一個用於 Python 腳本的 CPU 和內存分析器,能夠正確處理多線程式碼,還能區分 Python 程式碼和本機程式碼的運行時間。

你不需要修改程式碼,只需運行 Scalene 腳本,它就會生成一個文本形式的報告,顯示出每一行程式碼的 CPU 和內存的使用情況。透過這個文本報告,開發人員可以提高程式碼的效率。

Scalene 的速度快、準確率高,還能夠對高耗能的程式碼進行標註。

傳送門:https://github.com/emeryberger/scalene

除了以上 10 個,還有多個高性能的 Python 庫被點名了,例如 Norfair、Quart、Alibi-detect、Einops……等等,詳情查看底部連結。

那麼,你今年有發現好用的 Python 庫嗎?

如果有的話,請在評論區一起分享一下呀~

參考資料

tryolabs

(本文經 AI 新媒體量子位 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為〈誰是 2020 年最強 Python 庫?年度 Top10 出爐〉;首圖來源:unsplash

你可能會有興趣