2019年度Python 類庫Top 10

這是第五屆Python 類庫Top 10年度榜。在這裏,你會發現一些隱藏在開源世界中的珍寶,它們能讓你開始着手新的項目,或者讓你現有的項目更加有趣。從這份榜單裏,你既能找到機器學習的庫,也能找到非機器學習的庫,所以它在各方面均有所涉及。

1. HTTPX

如果你是一名經常與api交互的Python死忠粉,可能會很熟悉requests 類庫。然而,異步範式在高性能現代應用程序中越來越常見,如果你使用的正是異步範式,requests 可不會給你帶來什麼好處。

爲了解決這個問題, Tom Christie和他的合作者爲我們帶來了HTTPX,它是用於下個十年的新一代異步HTTP客戶端。

HTTPX 延續了requests的用法,爲你提供了標準特性以及HTTP/2和HTTP/1支持。除此之外,還包括使用ASGI協議直接調用Python Web應用程序以及完全類型註解等其他特性。

你需要同時發出大量請求?那麼HTTPX就是新的首選。

注意:目前仍在alpha版本中考慮HTTPX,現只作爲異步客戶端開發。在未來,將再重新引入同步客戶端。

2. Starlette

Starlette是一個輕量級的ASGI框架/工具包,具有包括WebSocket和GraphQL支持,進程內後臺任務和真正的高性能等一系列特性。除此之外,還有100%類型註解的代碼庫和無依賴。可以把它看作是一版非常輕量的、現代的和異步的Flask

你還可以靈活地選用它,決定是將其作爲一個完整的web框架來使用,還是僅僅作爲一個ASGI工具包來使用。

它運行在一個ASGI服務器上,比如uvicorn,它去年也排進了Top 10。如果你正在考慮開發一款新的Web應用程序,那麼你一定要給Starlette一個嶄露頭角的機會。

3. FastAPI

Starlette很棒,但它非常簡約,且非常開放。這給了你很大的自由,但有時,你只是需要一個把事情做得又對又快的框架。

Sebastian Ramirez的FastAPI正是這樣的一款框架。無論在哪層意義上講,它都可稱得上

這款新框架基於的是OpenAPI標準,用於構建具有Python高性能特性和自動交互文檔的API。它默認支持Swagger UI和ReDoc,使你能夠直接從瀏覽器調用和測試你的API,從而加快開發時間。使用此框架構建API既快速又簡單。

這個庫還利用了現代Python的最佳實踐之一:類型提示。FastAPI在很多方面都使用類型提示,但是最酷的特性之一是由Pydantic提供支持的自動數據校驗和轉換。

FastAPI是基於Starlette構建的,其性能與NodeJS和Go相當,而且它還支持原生WebSocket和GraphQL。

最後,但並非最不重要的是,它擁有一些爲開源庫編寫的最好的技術文檔。說真的,強烈建議看一看。

4. Immutables

MagicStack的工作人員迴歸,他們使用了簡單優雅的不可變映射類型(“凍結的字典”)。

誰能從中受益呢?其底層數據結構是一個哈希數組映射的字典樹(HAMT),在Haskell等函數式編程語言中使用。最有趣的是,對於set()和get()操作,它們都提供了O(log N)性能,對於相對較小的映射來說其實就是O(1)。

如果你的應用程序使用了更大的字典,可以使用bump 提高性能,這個酷酷的新庫可以值得關注。

5. Pyodide

Pyodide是一個真正能讓你大吃一驚的項目。它使用WebAssembly將Python科學棧引入瀏覽器,將科學計算提升到了一個全新的水平。

想要用NumPy處理一些數字嗎?使用Pandas處理一些較大的數據流?使用NumPy標制結果?幸有Pyodide,現在你可以在瀏覽器中輕鬆實現所有這些功能,甚至更多。

除此之外,更好的消息是:它的packages目錄列出了超過35個當前可用的包。不誇張地說,天空是其唯一限制。

6. Modin

Modin的座右銘是通過改變一行代碼來擴展你的Pandas 工作流程,真的,就這麼簡單。只需安裝Modin,改變你的導入語句,在當下擁有多核處理器的筆記本電腦上就能獲得高達4倍的速度優勢。

它是怎麼做到的?現在來揭曉這個祕密。Modin實現了自己的modin.pandas.DataFrame對象,它是一個輕量級並行DataFrame。這個對象的使用是透明的,因爲它與Pandas 是api兼容的,並且它是在後臺運行的,它將使用RayDask之類的計算引擎來分發數據和計算。

有時候,只需要對你的代碼做一些小的修改就能使速度獲得極大的提升,Modin就是個很好的證明。

7. Streamlit

在每個重大的機器學習項目中,都有一個你最終需要與模型和數據進行手動交互的時間點。與花費數小時和數千行代碼開發應用程序不同,Streamlit使你能夠快速構建應用程序來共享你的模型和分析。現在,創建一個與你的數據和模型的輸出進行交互和可視化的UI簡直易如反掌。

Streamlit提供了一種從Python腳本跳到生產級應用程序的快速方法,只需在代碼中添加幾行即可。

Streamlit能與各種數據科學相關的工具一起工作,TensorFlowKerasPyTorchPandas,凡是你能想到的,它都可以。

8. Transformers

如果你正在從事任何與機器學習相關的工作,那麼你可能已經聽說了在過去一年中圍繞自然語言處理(NLP)方面的重要進展。

許多新的和高性能的模型,如 BERT、 XLNet 或者roBERTa,已經被開發出來,通過各種NLP任務(如文本分類、機器翻譯、命名實體識別等)來顯著提高技術水平。

對於實踐者來說,重要的是擁有能夠使用這些模型來支撐生產應用程序的工具,這些用起來並不複雜。對於研究人員來說,重要的是擁有能夠調整內部機制的類庫,這樣就可以更輕巧地開發和試驗新的模型,而不必浪費太多時間編寫樣板代碼。

Hugging Face 有一幫傑出的人,他們爲我們帶來了 transformers,它是一個類庫,其中包括打包、預先訓練,並已經爲使用最現代的NLP模型的實現做好了準備。TensorFlow 2.0和PyTorch之間的互操作性幫助該類庫迅速成爲行業標準,支撐着研究和生產應用程序。它們的發展速度也非常快,隨着研究人員的開發,經常有新的模型引入到這個類庫中。

蛋糕上的櫻桃:Hugging Face 團隊開發了 DistilBERT,它是一個體積更小、速度更快、價格更低、重量更輕的純淨版BERT。

你還在猶豫要不要使用Hugging Face / Transformer以切換到現代的NLP?那麼擇日不如撞日,今天就是你的幸運日,看看他們偉大的在線演示,可不要吝惜你的大姆指喲。

9. Detectron2

Facebook的人工智能研究團隊(FAIR)一直在推動計算機視覺(CV)的極限,他們開發了新的模型,用於像對象檢測、姿式預估、語義/實例劃分,以及最近的全景分割等任務。

解決這些問題的可能性就像幾年前的科幻小說一樣。我們對FAIR抱有最好的期望,這一次他們設法再次震撼全場。

Detectron2是備受期待的Detectron續作,它是用PyTorch從頭開始構建的,裝滿了最先進的計算機視覺算法。

這樣的類庫尤其難於進行工程設計,因爲它們必須支持不同類型的用例。就像Hugging Face的Transformers一樣,費爾團隊也很好地完成了Detectron2的設計,它採用了一種非常靈活和模塊化的方式,使得它非常適合CV的研究應用。同時,它的使用極其簡單,對於那些只想快速獲得結果而不想幹預內部機制的人來說非常理想。是的,你可以使用Detectron2,讓你的軟件只用幾行Python代碼就能“理解”圖像。

時間將會告訴我們,Detectron2能否成功地營造一個充滿活力的社區,而到目前爲止,情況看來很有希望。它很可能成爲CV應用程序的“首選”解決方案,因爲在CV應用程序中,新的、更快、更好的模型是由研究人員創建的。如果你正在做任何類型的CV工作,一定要密切保持關注!

10. Metaflow

前方出現一個新生兒,一幅新面孔勉強擠進了2019年的名單!但是贊成別不把它當回事:儘管它纔是在幾周前剛剛發佈的,但已經經過了Netflix的內部測試,歷經兩年時間的改進,他們才決定開放源代碼。

Metaflow是一個Python類庫,用於幫助數據科學家和工程師構建用於現實世界的真實項目。它主要專注於減輕非技術數據科學家的技術負擔,例如計算資源、並行執行、體系結構設計和版本控制等。Netflix與AWS的合作,使你能夠輕鬆定義複雜的數據流,同時對分佈式計算提供開箱即用的支持。

我們已經在爲Tryolabs內部的一些關鍵項目做了Metaflow評估。如果你有興趣更多地瞭解這款工具,請查看Netflix的公開博客

總結

這一年又過去了,它爲開源世界留下了非凡的貢獻,這些貢獻在未來幾年仍將具有重要意義。你可以查看我們之前榜單:看看2015年2016年2017年2018年來類庫的演變。

如果我們漏掉了你最喜歡的Python類庫,請在下面發表評論。我們很想聽聽你的意見。

作者介紹

Fabián Torres,全棧開發人員。電氣工程學士學位;Elias Masquil,全棧開發人員;Alan Descoins,首席技術官和合作伙伴,計算機工程學士學位;German Hoffman,全棧開發和研究工程師,計算機工程學士學位。

原文鏈接:Top 10 Python libraries of 2019

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章