2016年年度十大Python庫盤點

zhao.db 7年前發布 | 18K 次閱讀 Python Python開發

圣誕將至,又到了年終盤點時間,Tryo Labs 和去年一樣又推出了一份 2016 年十大 Python 庫的榜單。對于這份榜單的篩選條件,Tryo Labs 寫道:「我們避開了 Django、Flask 等已經成為今天的標準庫的已經成功的項目。另外,這個榜單中有的庫是 2016 年之前建立的,但它們在今年的受歡迎度出現了暴增或我們認為它們非常好所以可以進入這個榜單。」下面是榜單詳情:

1. Zappa

鏈接: https://www.zappa.io/

自 AWS Lambda(以及后續的其它項目)發布以來,人們的關注點就全部轉移到了無服務器架構上。這些架構讓我們可以將微服務(microservice)部署到云端、部署到一個完全可管理的環境中;在這樣的環境中,人們不用關心管任何服務器,而只需要分配無狀態的、短暫的計算容器(computing container)即可——一個服務提供商即可完全管理。通過這一范式,事件(比如流量尖峰)可以觸發更多這些容器的執行,因此有可能能夠處理「無限的」水平擴展。

Zappa 是一個用于 Python 的無服務器框架,盡管(至少目前)它僅支持 AWS Lambda 和 AWS API Gateway。它使得開發這樣架構的應用變得非常簡單,能將你從使用 AWS Console 或 API 的繁瑣配置工作中解放出來,而且它還有各種用于簡化部署和管理不同環境的命令。

2. Sanic + uvloop

鏈接:

Sanic: https://github.com/channelcat/sanic

uvloop:  https://magic.io/blog/uvloop-blazing-fast-python-networking/

誰說 Python 不能很快?Sanic 不僅有可能是有史以來最好的軟件庫名字,也可能是有史以來最快的 Python 網頁框架,而且似乎也遠遠超過其它框架。它是一個專為速度而設計的類 Flask 的 Python 3.5+ 網頁服務器。另一個庫 uvloop 是一個用于 asyncio 的事件循環(event loop,其底層使用了 libuv)的超快速的插件替代。這兩個加起來就是一個強大的組合!

根據 Sanic 的作者的基準測試,uvloop 可以驅動 Sanic 每秒處理超過 3.3 萬條請求,這實在太強了!(比 node.js 還快)。你的代碼可以受益于這種新的 async/await 語法——它們會看起來很整潔;此外我們也喜歡 Flask 風格的 API。你一定要試試 Sanic,而且如果你也在使用 asyncio,你也可以無需太多修改你的代碼就能受益于 uvloop。

3. asyncpg

鏈接: https://github.com/MagicStack/asyncpg

跟進 asyncio 框架的最新進展,來自 MagicStack 的人為我們帶來了這個高效的異步(目前只支持 CPython 3.5)數據庫接口庫,其是專門為 PostgreSQL 設計的。它有零相關性,這意味不需要安裝 libpq。相對而言,withpsycopg2(最流行的 Python 的 PostgreSQL 適配器)需要以文本格式與數據庫服務器交換數據;而 asyncpg 則實現了 PostgreSQL 二進制 I/O 協議,這讓其不僅支持通用類型,而且還有其它許多性能上的好處。

其基準是很清楚的:asyncpg 平均至少比 psycopg2(或 aiopg)快 3 倍,也比 node.js 和 Go 實現更快。

4. boto3 

鏈接: https://github.com/boto/boto3

如果你的基礎設施部署在 AWS 上或使用了它們的服務(比如 S3),那么你應該非常樂意看到 boto(用于 AWS API 的 Python 接口)被從頭到尾完整重寫了。而且你不用一次性就完全遷移你的應用:你可以同時使用 boto3 和 boto(2) ;比如僅在你應用中新的部分使用 boto3。

這個新的實現在不同的服務間會一致的多,而且因為其使用了數據驅動的方法來在運行時間(runtime)從 JSON 描述文件中生成類,所以其總是可以實現快速更新。再也不用滯后于新的 Amazon API 功能了,趕緊使用 bot3 吧!

5.TensorFlow

鏈接: https://www.tensorflow.org/

大名鼎鼎的 TensorFlow。自從谷歌在 2015 年 11 月發布以來,這個庫已經獲得了很多改進,它已成為時下最流行的 GitHub Python 庫。簡而言之,TensorFlow 是一個使用數據流圖(data flow graphs)的數值計算庫,可以在 GPU 或 CPU 上運行。

在過去一年里,我們目睹了 TensorFlow 在機器學習社區中掀起了一股新風潮(特別是在深度學習領域),它不僅出現在研究領域,而且在應用領域也非常常見。如果你正在做深度學習并想在高級別接口中使用它,你可以嘗試以它為后端的 Keras 或新推出的 TensorFlow-Slim。

6.gym+universe

Gym: https://gym.openai.com/

Universe: https://universe.openai.com/

如果你是人工智能圈內的人,肯定聽說過非營利人工智能研究公司 OpenAI。他們的研究人員在今年開源了一些 Python 代碼。Gym 是一個用于開發并比較強化學習算法的工具包。它包含一個開源庫,這個庫收集了一些可被用于測試強化學習算法的測試問題(環境)。它還包含一個站點與 API,能讓你對比訓練出的算法(代理,agent)的表現。因為它不在乎代理的實現方式,你可以選擇使用自己的計算庫建立代理:numpy、TensorFlow、Theano 等。

他們最近也發布了 Universe,這是一個用于研究通用人工智能在跨游戲、網頁和其他應用上的表現的軟件平臺。Universe 能完美匹配 gym,因此它能讓任何真實世界應用調整進 gym 環境中。研究人員希望這一無限的可能性能夠加速對智能代理的研究,從而解決通用任務。

7.Bokeh

鏈接: http://bokeh.pydata.org/

你可能熟知一些提供數據可視化的 Python 庫,其中最流行的就是 matplotlib 和 seaborn。然而,Bokeh 被創造用來做交互可視化(interactive visualization),并且面向現代的網頁瀏覽展示。這意味著 Bokeh 能創造出一個可以讓你探索來自網頁瀏覽器數據的情節(plot)。比較棒的是它緊密融合了 Juptyer Notebooks,所以你能使用它配合你的專業工具進行研究。它也有一個可選的服務器組件 bokeh-server,其帶有許多強大的功能,比如在服務器端對大型數據集進行下采樣、流傳輸數據、變換等。可點擊網址 http://bokeh.pydata.org/en/latest/docs/gallery.html 查看案例,看起來很棒。

8.Blaze

鏈接: https://blaze.readthedocs.io/en/latest/index.html

有時候,當你對數據集運行分析時,卻發現數據集過大,無法一次塞進計算機 RAM 中。如果你無法依賴 numpy 或 Pandas,你通常需要轉而使用其他的工具,如 PostgreSQL、MongoDB、Hadoop、Spark 等等。這些工具都有其自身的優缺點,依照任務的特點,總有一種工具是適合你的。但決定轉換工具是一項巨大的工程,因為你需要了解這些系統如何工作,以及如何以正確的形式插入數據。

Blaze 提供了一個統一的接口,讓用戶無需學習所有數據庫技術。Blaze 庫的核心是一種計算表達方式。Blaze 本身不會進行任何計算:它只是知道如何指定一個特定的后端,決定誰來執行任務。Blaze 還有其它很多功能(它形成了一個生態系統),它作為一個庫被開發出來。例如,Dask 實現了一個可用于 NumPy 數組的插件,可以處理大于內存的內容和利用多核處理器,并且還具有動態任務調度能力。

9.Arrow

鏈接: https://github.com/crsmithdev/arrow

有一個流行的說法,在計算機科學領域只有兩個大問題:無效緩存和命名。我認為這句話忽略了另一個大問題:管理數據時間(managing datetimes)。如果你曾經試圖在 Python 中管理數據時間,你就會知道標準庫里有巨量的模塊和類型:datetime、date、 calendar、 tzinfo、 timedelta、 relativedelta、 pytz 等等。更糟糕的是,時區都自然設定為默認值。

Arrow 為開發者提供了「人類的時間(datetime for humans)」,提供了一種清晰的方法來創建、操作、格式化和轉換日期、時間和時間戳。它可以用于替換 Python 2 和 3 的 datetime 類型,并提供了一個更友好的界面,同時加入新的功能(如 humanize)彌補了原系統的不足。即使你不需要 Arrow 提供的額外功能,使用它也可以大大減少代碼中的引用。

10. Hug

鏈接: http://www.hug.rest/

公開你的內部 API,這樣可以大大簡化 Python API 的開發過程。Hug 是一個僅限于 Python3 的庫,提供在 Python 中創建 HTTP REST API 的最簡單的方式。它不是一個 web 框架(雖然 Hug 提供這樣的功能,而且表現很好),它的主要功能是公開正確的標準內部 Python API。這個想法非常簡單:一次定義邏輯和結構,并且可以通過多種方式公開你的 API。目前,它支持公開 REST API 或命令行界面。

你可以使用類型注釋(type annotations),讓 Hug 不僅為你的 API 生成文件,同時提供驗證和明確的錯誤消息,這可以讓你的開發工作(和你的 API 用戶的工作)變得輕松很多。Hug 構建在 Falcon 的高性能 HTTP 庫之上,這意味著你可以使用任何 wsgi 兼容的服務器(例如 gunicorn)將其部署到生產環境中。

 

來自:http://www.jiqizhixin.com/article/2048

 

 本文由用戶 zhao.db 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!