2020年Python生態圈年度總結——top10類庫
今天天是2020年的最后一天了,在送走多災多難的2020之際,首先祝愿各位小伙伴新年快樂!另外,大家都開始忙于年度總結,蟲蟲也來給大家總結一下程序屆一些總結。現在程序屆最火的是什么?當然莫過于Python語言了,那我們就來總結一下2020年的Python生態圈,看看今年新生并且最流行的類庫。

1Rich

開發終端命令行應用大多數人都是默認黑底白字了事,或者自己費勁拼ASCI代碼。有了這個庫Rich,幾行代碼幫你搞定顏色和樣式,同時還可以制作進度條、表情,邊框以及一些復雜的表格。
Rich 是一個 Python 庫,可以為Python應用在終端中提供富文本和精美格式。可以很容易的在終端輸出添加各種顏色和不同風格。Rich 還可以繪制漂亮的表格,進度條,Markdown格式,突出顯示語法的源代碼及回溯等等,不勝枚舉。
Rich支持跨平臺,適用于Windows,Linux和OSX。真彩色/表情符號與新版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應用可以回復一起分享給逛到小伙伴們。