为Python正名:语言本身不是瓶颈,可能是外部资源出了问题

2021 年 1 月 4 日 机器之心

选自towardsdatascience

作者 Anna Anisienia
机器之心编译
编辑: 陈萍、李亚洲
Python 作为一种简单、易于掌握的编程语言,虽然在使用过程中存在短板,但也受到很多人的青睐。

Python 真的很慢吗?这需要具体问题具体分析。和 C 等编译型语言相比,Python 在处理数字方面速度确实很慢。这也从侧面说明了 Python 中加速数字处理的库(如 numpy)为什么如此重要了。

但是,Python 是不是在所有用例上都比其他编程语言慢呢?并非如此,如果了解一下为解决特定问题而优化的许多 Python 库的性能基准测试,你就会发现 Python 比编译型语言做得好。以 FastAPI 性能基准为例,FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。Go 语言显然比 Python 快,不过,FastAPI 在构建 REST API 方面胜过了 Go 的一些库:

Web 框架基准测试,不包括 C++ 和 Java web 框架。

同样,在比较 Dask(使用 Python 编写)与 Spark(使用 Scala 编写)处理数据密集型神经成像 pipeline 时,结果表明这两个引擎之间没有实质的性能差异。

代码速度 VS 实用性

从实用的角度来看,在为日常工作选择编程语言时,需要回答多个不同的问题。

问题 1:这种语言能够可靠地解决多项业务问题吗?

如果你只关心速度,那么不要用 Python,各种用例都有更快的替代方案。 Python 的主要优点在于可读性、易用性和可解决大量问题。 Python 可以作为粘合剂,将不同的系统、服务和用例连接在一起。

问题 2:你能找到足够多懂这门语言的员工吗?

Python 易于学习和使用,因此用户数量不断增长。以前使用 Excel 处理数字业务的用户,现在可以很快学会用 Pandas 编写代码,从而学会在不依赖 IT 资源的情况下实现自给自足。同时,这也缓解了 IT 和分析部门的负担。

如今,企业更容易找到会 Python、并能用这种语言维护 Spark 数据处理应用程序的数据工程师,而不是用 Java 或 Scala 做同样工作的人。许多组织在很多用例中逐渐转向使用 Python,因为懂 Python 的员工更容易找到。

相比之下,一些公司迫切需要 Java 或 C# 开发人员来维护他们现有的应用程序,但这些语言很难(需要数年才能掌握),而且对于新手程序员来说似乎没有吸引力,他们可能使用更简单的语言(如 Go 或 Python)在工作中挣到更多的钱。

问题 3:不同领域专家之间的协同效应

如果你的公司使用 Python,那么业务用户、数据分析师、数据科学家、数据工程师、后端和 web 开发人员、运维工程师甚至系统管理员很可能使用同一种语言。这将在项目中产生协同效应,来自不同领域的人可以一起工作并利用相同的工具。

数据处理的真正瓶颈是什么?

在平时的工作中,通常我们遇到的瓶颈不是语言本身,而是外部资源。让我们看几个例子。

示例 1:写入关系型数据库

当以 ETL 方式处理数据时,最终我们需要将这些数据加载到某个集中的地方。虽然我们可以利用 Python 中的多线程,更快地将数据写入某些关系型数据库,但并行写入次数的增加可能会使该数据库的 CPU 容量达到极限。

这意味着 Python 具备并行化和加速操作的机制,但是关系型数据库(受 CPU 核数的限制)有其局限性,仅通过更快的编程语言很难解决。

示例 2:调用外部 API

另一个例子是使用外部 REST API,以提取数据来满足数据分析需求,这一案例中语言本身似乎并不是瓶颈。虽然我们可以利用并行加速来提取数据,但这可能是徒劳的,因为许多外部 API 限制了在特定时间段内发出请求的数量。因此,我们会故意让脚本变慢,以确保不会超过 API 的请求限制:

time.sleep(10)

示例 3:处理大数据

从处理超大数据集的经验来说,无论用什么语言你都不能直接用笔记本内存来负载大数据。这种情况下,你需要利用 Dask、Spark、Ray 等分布式处理框架。在使用单个服务器实例或者笔记本时,处理的数据量存在限制。

如果你想把实际的数据处理工作转移到一个计算节点集群中,甚至使用 GPU 来加速计算,Python 恰好有一个庞大的框架生态系统,使这个任务变得更容易:

  • 你是否想用 GPU 来加快数据科学的计算速度?使用 PyTorch、TensorFlow、Ray 或 Rapids(甚至 SQL - BlazingSQL)。

  • 你是否想加速 Python 代码处理大数据的速度?使用 Spark(或 Databricks)、Dask 或 Prefect。

  • 你是否想加快数据分析的处理速度?使用快速的专用内存列数据库,通过使用 SQL 查询确保高速处理。


此外,如果你需要协调、监测计算节点集群上发生的数据处理,你有 Apache Airflow、Prefect 或 Dagster 等多个 Python 工作流管理平台可供选择,它们可以加速数据 pipeline 的开发和维护。

顺带提一下,一些人可能会抱怨 Python 没有充分利用其能力或者未对手头问题使用合适的数据结构。

总而言之,如果你需要快速处理大量数据,那你更需要的是计算资源而不是快速的编程语言,而且一些 Python 库能够轻松实现在数百个节点上的分布式工作。

原文链接:https://towardsdatascience.com/is-python-really-a-bottleneck-786d063e2921

© THE END 

转载请联系本公众号获得授权

投稿或寻求报道:content@jiqizhixin.com

登录查看更多
0

相关内容

Python是一种面向对象的解释型计算机程序设计语言,在设计中注重代码的可读性,同时也是一种功能强大的通用型语言。
【干货书】Python机器学习,361页pdf
专知会员服务
266+阅读 · 2021年2月25日
专知会员服务
143+阅读 · 2020年12月28日
【2020新书】C语言编程傻瓜式入门,第二版,464页pdf
专知会员服务
62+阅读 · 2020年10月15日
【2020新书】高级Python编程,620页pdf
专知会员服务
235+阅读 · 2020年7月31日
【2020新书】现代C++初学者指南,301页pdf
专知会员服务
159+阅读 · 2020年7月24日
Python导论,476页pdf,现代Python计算
专知会员服务
260+阅读 · 2020年5月17日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
180+阅读 · 2020年1月1日
一份数据科学家必备的技能清单(附资源)
THU数据派
7+阅读 · 2018年5月29日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
快乐的迁移到 Python3
Python程序员
5+阅读 · 2018年3月25日
为什么 Python 更适合做 AI/机器学习?
计算机与网络安全
10+阅读 · 2018年3月18日
五位专家跟你讲讲为啥Python更适合做AI/机器学习
全球人工智能
3+阅读 · 2018年3月18日
TensorFlow神经网络教程
Python程序员
4+阅读 · 2017年12月4日
Python 书单:从入门到……
Linux中国
39+阅读 · 2017年8月6日
Python越来越受欢迎,这中间发生了什么?
Python技术博文
4+阅读 · 2017年7月21日
Arxiv
8+阅读 · 2020年5月2日
Arxiv
8+阅读 · 2019年3月28日
Deep Comparison: Relation Columns for Few-Shot Learning
VIP会员
相关VIP内容
【干货书】Python机器学习,361页pdf
专知会员服务
266+阅读 · 2021年2月25日
专知会员服务
143+阅读 · 2020年12月28日
【2020新书】C语言编程傻瓜式入门,第二版,464页pdf
专知会员服务
62+阅读 · 2020年10月15日
【2020新书】高级Python编程,620页pdf
专知会员服务
235+阅读 · 2020年7月31日
【2020新书】现代C++初学者指南,301页pdf
专知会员服务
159+阅读 · 2020年7月24日
Python导论,476页pdf,现代Python计算
专知会员服务
260+阅读 · 2020年5月17日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
180+阅读 · 2020年1月1日
相关资讯
一份数据科学家必备的技能清单(附资源)
THU数据派
7+阅读 · 2018年5月29日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
快乐的迁移到 Python3
Python程序员
5+阅读 · 2018年3月25日
为什么 Python 更适合做 AI/机器学习?
计算机与网络安全
10+阅读 · 2018年3月18日
五位专家跟你讲讲为啥Python更适合做AI/机器学习
全球人工智能
3+阅读 · 2018年3月18日
TensorFlow神经网络教程
Python程序员
4+阅读 · 2017年12月4日
Python 书单:从入门到……
Linux中国
39+阅读 · 2017年8月6日
Python越来越受欢迎,这中间发生了什么?
Python技术博文
4+阅读 · 2017年7月21日
Top
微信扫码咨询专知VIP会员