2019 年度 Python 类库 Top 10

【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. StarletteStarlette 是一个轻量级的 ASGI 框架 / 工具包,具有包括 WebSocket 和 GraphQL 支持,进程内后台任务和真正的高性能等一系列特性 。除此之外,还有 100% 类型注解的代码库和无依赖 。可以把它看作是一版非常轻量的、现代的和异步的 Flask。
你还可以灵活地选用它,决定是将其作为一个完整的 web 框架来使用,还是仅仅作为一个 ASGI 工具包来使用 。
它运行在一个 ASGI 服务器上,比如 uvicorn,它去年也排进了 Top 10 。如果你正在考虑开发一款新的 Web 应用程序,那么你一定要给 Starlette 一个崭露头角的机会 。
3. FastAPIStarlette 很棒,但它非常简约,且非常开放 。这给了你很大的自由,但有时,你只是需要一个把事情做得又对又快的框架 。
Sebastian Ramirez 的 FastAPI 正是这样的一款框架 。无论在哪层意义上讲,它都可称得上快 。
这款新框架基于的是 OpenAPI 标准,用于构建具有 Python 高性能特性和自动交互文档的 API 。它默认支持 Swagger UI 和 ReDoc,使你能够直接从浏览器调用和测试你的 API,从而加快开发时间 。使用此框架构建 API 既快速又简单 。
这个库还利用了现代 Python 的最佳实践之一:类型提示 。FastAPI 在很多方面都使用类型提示,但是最酷的特性之一是由 Pydantic 提供支持的自动数据校验和转换 。
FastAPI 是基于 Starlette 构建的,其性能与 NodeJS 和 Go 相当,而且它还支持原生 WebSocket 和 GraphQL 。
最后,但并非最不重要的是,它拥有一些为开源库编写的最好的技术文档 。说真的,强烈建议看一看 。
4. ImmutablesMagicStack 的工作人员回归,他们使用了简单优雅的不可变映射类型 (“冻结的字典”) 。
谁能从中受益呢?其底层数据结构是一个哈希数组映射的字典树 (HAMT),在 Haskell 等函数式编程语言中使用 。最有趣的是,对于 set() 和 get() 操作,它们都提供了 O(log N) 性能,对于相对较小的映射来说其实就是 O(1) 。
如果你的应用程序使用了更大的字典,可以使用 bump 提高性能,这个酷酷的新库可以值得关注 。
5. PyodidePyodide 是一个真正能让你大吃一惊的项目 。它使用 WebAssembly 将 Python 科学栈引入浏览器,将科学计算提升到了一个全新的水平 。
想要用 NumPy 处理一些数字吗?使用 Pandas 处理一些较大的数据流?使用 NumPy 标制结果?幸有 Pyodide,现在你可以在浏览器中轻松实现所有这些功能,甚至更多 。
除此之外,更好的消息是:它的 packages 目录列出了超过 35 个当前可用的包 。不夸张地说,天空是其唯一限制 。
6. ModinModin 的座右铭是通过改变一行代码来扩展你的 Pandas 工作流程,真的,就这么简单 。只需安装 Modin,改变你的导入语句,在当下拥有多核处理器的笔记本电脑上就能获得高达 4 倍的速度优势 。
它是怎么做到的?现在来揭晓这个秘密 。Modin 实现了自己的 modin.pandas.DataFrame 对象,它是一个轻量级并行 DataFrame 。这个对象的使用是透明的,因为它与 Pandas 是 api 兼容的,并且它是在后台运行的,它将使用 Ray 或 Dask 之类的计算引擎来分发数据和计算 。
有时候,只需要对你的代码做一些小的修改就能使速度获得极大的提升,Modin 就是个很好的证明 。
7. Streamlit在每个重大的机器学习项目中,都有一个你最终需要与模型和数据进行手动交互的时间点 。与花费数小时和数千行代码开发应用程序不同,Streamlit 使你能够快速构建应用程序来共享你的模型和分析 。现在,创建一个与你的数据和模型的输出进行交互和可视化的 UI 简直易如反掌 。


推荐阅读