“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

2019 年度 Python 类库 Top 10

  • 2020-01-02
  • 本文字数:3462 字

    阅读完需:约 11 分钟

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


公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2020-01-02 11:354556
用户头像
刘燕 InfoQ高级技术编辑

发布了 1112 篇内容, 共 489.1 次阅读, 收获喜欢 1965 次。

关注

评论 1 条评论

发布
用户头像
Good!

2020-04-05 14:27
回复
没有更多了
发现更多内容

硬核!最全“Java面试宝典+Java核心知识集”,一箭双雕杠春招

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

面试官:给你一段SQL,你会如何优化?

做梦都在改BUG

Java MySQL 数据库 sql 性能优化

接招吧!最强“高并发”系统设计 46 连问,分分钟秒杀一众面试者

做梦都在改BUG

Java 系统设计 高并发

什么是 LuaJIT?为什么 Apache APISIX 选择了 LuaJIT?

API7.ai 技术团队

lua api 网关 APISIX API Gateway

真香!180页100+题15W+字解析的《Java高级面试指南》,果断收下

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

从零开始自己动手写阻塞队列

Java你猿哥

Java 线程 阻塞队列 实战

浅谈 Java线程状态转换及控制

Java你猿哥

Java 后端 多线程 ssm Java工程师

阿里面试:100个高频Spring面试题,助你一臂之力

Java你猿哥

Java spring 面试 Spring Boot 面经

ChatGPT 出现严重技术漏洞,“当红炸子鸡”翻车了?

这我可不懂

低代码 openai ChatGPT JNPF

二本4年Java经验,五面阿里艰苦经历(定薪45K),回馈一波心得体会

Java你猿哥

Java redis 面试 Spring Boot 面经

mysql-online-ddl是否需要rebuild

TiDB 社区干货传送门

【3.17-3.24】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

夺冠在即!2022 OceanBase数据库大赛12强集结

OceanBase 数据库

数据库 oceanbase

可观测性之谷歌性能主管最新的有关LCP的文章

Yestodorrow

性能 可观测性 用户体验

Chaosd 模拟两地三中心集群的网络环境

TiDB 社区干货传送门

实践案例 管理与运维 故障排查/诊断 安装 & 部署

对tidb-lightning导入机制的一点点研究

TiDB 社区干货传送门

故障排查/诊断 TiDB 源码解读

MQTT安全专题01|构建可靠的物联网系统

EMQ映云科技

物联网 IoT mqtt 物联网安全 企业号 3 月 PK 榜

来2023全球边缘计算大会与EMQ探讨云边协同落地实践

EMQ映云科技

物联网 IoT 边缘计算 emq 企业号 3 月 PK 榜

面试官:说说什么是单点登录?什么是SSO?什么是CAS?

Java你猿哥

Java ssm CAS SSO

JVM超神之路:金三银四跳槽需要的JVM知识点,都给你整理好了

Java你猿哥

Java 面试 JVM 面经 Java工程师

面试官:kafka分布式消息系统,你真的了解吗?

做梦都在改BUG

Java kafka 消息队列 消息系统 消息中间件

Visio 绘图注释工具:VSDX Annotator 激活版

真大的脸盆

Mac Mac 软件 注释工具

保姆级教程!玩转 ChunJun 详细指南

袋鼠云数栈

大数据 开源

Nautilus Chain主网上线在即空投规则公布,如何获得更多的空投?

西柚子

深入理解Spring注解机制:注解的搜索与处理机制

Java你猿哥

Java spring Spring Boot ssm Spring注解

【v6 认证】PCTA/PCTP/PCSD 我的备考经验

TiDB 社区干货传送门

社区活动 新版本/特性发布 TUG 话题探讨 6.x 实践

2023年中国品牌全域智能营销白皮书

易观分析

营销 品牌

BGA焊接问题解析,华秋一文带你读懂

华秋电子

如何使用ShareSDK快速实现Android APP的社会化分享登录功能

MobTech袤博科技

OpenAI 发布ChatGPT 插件支持,官方文档译文

B Impact

操作系统跻身国家战略,中国操作系统开源社区走向何方?

OpenCloudOS

Linux 操作系统 DPU 大禹智芯 opencloudOS

2019年度Python 类库Top 10_AI&大模型_Fabián Torres_InfoQ精选文章