2020年P(guān)ython生態(tài)圈年度總結(jié)——top10類庫
今天天是2020年的最后一天了,在送走多災(zāi)多難的2020之際,首先祝愿各位小伙伴新年快樂!另外,大家都開始忙于年度總結(jié),蟲蟲也來給大家總結(jié)一下程序?qū)靡恍┛偨Y(jié)?,F(xiàn)在程序?qū)米罨鸬氖鞘裁?當(dāng)然莫過于Python語言了,那我們就來總結(jié)一下2020年的Python生態(tài)圈,看看今年新生并且最流行的類庫。

1Rich

開發(fā)終端命令行應(yīng)用大多數(shù)人都是默認黑底白字了事,或者自己費勁拼ASCI代碼。有了這個庫Rich,幾行代碼幫你搞定顏色和樣式,同時還可以制作進度條、表情,邊框以及一些復(fù)雜的表格。
Rich 是一個 Python 庫,可以為Python應(yīng)用在終端中提供富文本和精美格式??梢院苋菀椎脑诮K端輸出添加各種顏色和不同風(fēng)格。Rich 還可以繪制漂亮的表格,進度條,Markdown格式,突出顯示語法的源代碼及回溯等等,不勝枚舉。
Rich支持跨平臺,適用于Windows,Linux和OSX。真彩色/表情符號與新版Windows 終端一起使用,Windows 的經(jīng)典終端僅限 8 種顏色。Rich 還可以無縫配合Jupyter Notebook使用,而無需其他配置。
托管倉庫: github:/willmcgugan/rich
Commit數(shù)據(jù):

Github星級:18.7K
Diagrams

為了便于使用,一般要使用GUI工具來顯示應(yīng)用內(nèi)容和交互,比如繪制一個架構(gòu)圖。而Diagrams則無需任何設(shè)計工具,直接在Python代碼中繪制系統(tǒng)架構(gòu)圖。多系統(tǒng)圖標(biāo)對于多個云提供商(包括AWS,Azure,GCP等)。只需幾行代碼就能創(chuàng)建一個精美的架構(gòu)圖。

基于代碼的圖表,還可以通過標(biāo)準git版本控制來跟蹤更改。
托管倉庫: github:/ mingrammer/diagrams
Commit數(shù)據(jù):

Github星級:11.6 K
PyTorch Lightning
每一種提高數(shù)據(jù)科學(xué)團隊生產(chǎn)力的工具都很有價值。沒有理由讓從事數(shù)據(jù)科學(xué)項目的人每次都重新發(fā)明輪子,反復(fù)思考如何更好地組織其項目中的代碼,或者使用更高級別的抽象的貿(mào)易潛力控制。
PyTorch Lightning是一個對PyTorch項目的輕巧打包項目,用于高性能AI研究。通過將科學(xué)與工程脫鉤來幫助提高生產(chǎn)力。從某種意義上說,它使代碼更簡潔,對比更像是基于TensorFlow的Keras。但是Lightning更加開放,可以支持讓用戶訪問PyTorch所有常用的API。

PyTorch Lightning庫可幫助團隊利用圍繞組織的軟件工程的良好實踐并明確組件的職責(zé),以構(gòu)建可輕松擴展以在多個GPU,TPU和CPU上進行訓(xùn)練的高質(zhì)量代碼。比如在新冠大流行的今天,PyTorch Lightning可以幫用戶大家快速的應(yīng)用防止疫情的控制:
實例——口罩佩戴檢查:

實例——肺部MRT圖片處理:

托管倉庫: github:/ PyTorchLightning/PyTorch-lightning
Commit數(shù)據(jù):

Github星級:11.1 K
Typer
Typer是另一個幫助我們開發(fā)終端命令行應(yīng)用的庫,由FastAPI開發(fā)商tiangolo開發(fā)??梢岳肞ython 3.6+的類型提示功能來編寫命令行界面。除了確保代碼已正確記錄之外,還可以輕松進行CLI界面的驗證。通過使用類型提示,可以在Python編輯器(如VSCode)中獲得自動補全功能,這將提高您的生產(chǎn)率。
為了增強其功能,Typer依賴著名的Click庫。Click經(jīng)過了嚴格的測試和實踐以及豐富社區(qū)和插件,這些在Typer中都可以簡單"拿來"使用。
Typer提供完善的文檔,可以幫我們快速上手開發(fā)。

托管倉庫: github:/tiangolo/typer
Commit數(shù)據(jù):

Github星級:3.6K
Dear PyGui
雖然,根據(jù)前面幾個類庫幫助,可以讓終端APP很漂亮。但是很多時候光終端程序還是遠遠不夠的,需要一個真正的GUI。那么,接下來隆重出場的就是一個Gui類庫Dear PyGui。Dear PyGui是對著名的C++ GUI項目Dear ImGui的Python打包。
Dear PyGui利用了在視頻游戲中流行的即時模式,動態(tài)GUI是逐幀獨立繪制的,無需保留任何數(shù)據(jù)。這是它與其他Python GUI框架的不同點和優(yōu)勢。它具有很高的性能,并使用計算機的GPU來促進構(gòu)建高度動態(tài)的界面,這在工程,仿真,游戲或數(shù)據(jù)科學(xué)應(yīng)用程序中非常實用。

Dear PyGui易學(xué)易用,并且支持多平臺開發(fā),可以在Windows 10(DirectX 11),Linux(OpenGL 3)和MacOS(Metal)上運行。
托管倉庫: github:/hoffstadt/DearPyGui
Commit數(shù)據(jù):

github星級:3.4 K
Hydra

在進行機器學(xué)習(xí)項目的研究和實驗時,總是有無數(shù)的設(shè)置可以嘗試。在非平凡的應(yīng)用程序中,配置管理會變得相當(dāng)復(fù)雜,非???。有一種結(jié)構(gòu)化的方式來處理這種復(fù)雜性不是很好嗎?
Hydra代號九頭蛇,就是這樣一種工具。九頭蛇由臉譜(Facebook)開源實驗室推出,用于優(yōu)雅配置復(fù)雜應(yīng)用程序的框架,可讓我們以可組合的方式構(gòu)建配置,并從命令行或配置文件覆蓋某些部分。假設(shè)有一個正在試驗的模型的基本體系結(jié)構(gòu),以及它的多種變體。使用Hydra,可以定義基本配置,然后運行多個作業(yè),并進行更改:
- python train_model.py variation=option_a,option_b
- ├── variation
- │ ├── option_a.yaml
- │ └── option_b.yaml
- ├── base.yaml
- └── train_model.py
Hydra同源的一個項目OmegaConf則為分層配置系統(tǒng)的基礎(chǔ)提供了一致的API,并支持YAML,配置文件,對象和CLI參數(shù)等不同來源。
托管倉庫: github/facebookresearch/hydra
Commit數(shù)據(jù):

Github星級:3.4 K
Hummingbird

深度學(xué)習(xí)的發(fā)展又帶活了AI和機器學(xué)習(xí),諸如PyTorch這樣的框架正在以驚人的速度發(fā)展,并且硬件設(shè)備已經(jīng)過優(yōu)化,可以更快地運行TensorFlow計算并降低功耗。。但是并非所有的機器學(xué)習(xí)都是深度學(xué)習(xí)。通常,機器學(xué)習(xí)模型由更傳統(tǒng)的算法(例如Random Forest)組成,或者使用流行的LightGBM和XGBoost之類的梯度提升方法。
Hummingbird庫創(chuàng)建就是為了解決模型新老更替的問題,微軟開源的這個新庫可以將訓(xùn)練有素的傳統(tǒng)ML模型編譯為TensorFlow計算。從而無需重新設(shè)計模型就可以在TF中使用以前積累的模型。
截止當(dāng)前,Hummingbird支持PyTorch,TorchScript,ONNX和TVM,以及各種ML模型和矢量化器的轉(zhuǎn)換。其內(nèi)建的API也與Sklearn paradigm非常相似,后者使可以重用現(xiàn)有代碼,但將實現(xiàn)更改為Hummingbird生成的代碼。
托管倉庫:github:microsoft/hummingbird
Commit數(shù)據(jù):

Github星級:2 K
scalene

隨著Python庫生態(tài)系統(tǒng)變得越來越復(fù)雜,充滿了很多依賴C擴展和多線程代碼的代碼。在衡量性能時,這成為一個問題。因為CPython內(nèi)置的探查器無法正確處理多線程代碼。
為了解決這個痛點,出現(xiàn)了Scalene。Scalene是用于Python腳本的CPU和內(nèi)存探查器,能夠正確處理多線程代碼并區(qū)分運行Python和本機代碼所花費的時間。無需修改代碼,從命令行使用scalene運行腳本,它將為自動生成文本或HTML報告,顯示代碼每一行的CPU和內(nèi)存使用情況。

托管倉庫:github: emeryberger/scalene
Commit數(shù)據(jù):

Github星級:3.2 K
HiPlot
幾乎每個數(shù)據(jù)科學(xué)家在其工作中都會遇到要處理高維數(shù)據(jù)的任務(wù)。不幸的是,人腦沒有足夠的連線直觀地處理這種數(shù)據(jù),而必須借助其他輔助處理。
由Facebook開源的HiPlot,可使用并行繪圖和其他圖形方式來表示信息,從而幫助發(fā)現(xiàn)高維數(shù)據(jù)中的相關(guān)性和模式,實現(xiàn)對高維數(shù)據(jù)的可視化和過濾。

HiPlot是交互式的,可擴展的,支持從標(biāo)準JupyterNotebook或通過其自己的服務(wù)器使用它。
托管倉庫:github: facebookresearch/hiplot
Commit數(shù)據(jù):

Github星級:1.7 K
PrettyErrors
知道了性能瓶頸,那就要解決深層次的原因,或許是邏輯上的問題,或許是有異常代碼。
PrettyErrors只做一件事并且做得很好。在支持彩色輸出的終端中,它將隱秘的堆棧軌跡轉(zhuǎn)換為更適合用微弱的人眼解析的東西。讓我們無需擴充幾個大顯示器,滿屏幕來查找異常。

托管倉庫: github:/ onelivesleft/PrettyErrors
Commit數(shù)據(jù):

Github星級:1.4 K
總結(jié):
本文我們列舉了Python生態(tài)圈中,比較熱門流行的Python類庫。但是這只是Python龐大生態(tài)世界的冰山一腳,而且覆蓋了各行各業(yè)的應(yīng)用,可能大家關(guān)注領(lǐng)域不同,如果你要更好的Python應(yīng)用可以回復(fù)一起分享給逛到小伙伴們。