为什么Python的“缓慢”并没有减慢任何人的速度?

有没有想过为什么尽管人们抱怨 Python 速度慢,但它仍然无处不在?尤其是当人们开始编码时,你听到的第一句话就是“Python 很慢”。但是,如果它是这样的蜗牛,为什么还有那么多人用它来做各种重型东西呢?

情况是这样的:没错,Python 在原始速度方面并不是编程语言中的尤塞恩-博尔特(Usain Bolt)。我们说的是循环和 if 语句这些基本的东西。但实事求是地说,我们有多少时候会因为 for 循环的速度而决定项目的成败呢?

Python 的秘诀并不在于打破速度记录。而是它与超级优化的 C 库配合默契的诀窍。这些库是完成繁重任务的肌肉,而 Python 更像是指导整个过程的友好教练。因此,你的 Python 代码在运行一个循环时可能会花一点时间,但当它调用这些 C 库做真正的工作时,它们会以闪电般的速度完成任务。

所以,下次当你听到有人说 Python 慢的时候,也许可以把这个想法告诉他们。Python 不仅仅是键入代码的速度,它更重要的是完成任务的整体速度和便捷性,这一切都要归功于它整齐排列的所有优化库。

网友讨论
因为你用 Python 所做的大部分工作要么是协调数值计算,由 C 层、数据库或集群来完成繁重的工作,要么就是 I/O 绑定,所以性能差并不重要。

=============================================================

因为:

  1. 对于大多数事情来说它执行得足够快。
  2. 写起来很快。
  3. 为了减少 5-10% 的执行时间而花费 3-5 倍的开发时间通常是不值得的。当确实值得付出努力时,不要使用 Python 来完成任务。

=============================================================

其他语言的性能提升实际上在 5-20 倍范围内。但我的程序在 Python 中执行需要 400 毫秒还是在 C 中需要 20 毫秒并不重要 - 无论哪种方式对我来说都几乎是即时的。

=============================================================

Python 有许多工具可以在重要时提高性能 - 在分析之后,例如:Numpy 和矢量化、Tensorflow、Dask 和我处理数字的超级武器 - DuckDB。

=============================================================

我目前大约有10年的经验。我在一家大型科技公司工作。我写了嵌入式数据采集和电机控制大约 4 年,然后我在 Linux 设备驱动程序(这些都是 C)上工作了 2 年,然后现在在 AI 平台堆栈上工作了 4 年,在不同的层是 C,然后是 C++,然后Python。我已经承诺了所有 3 层。

因此,根据我的经验,如果你想完成任何特定的事情,通常完成它的 C 程序大约是 C++ 程序的两倍,是 Python 程序的 5 到 10 倍。编写较低级语言还需要花费大量额外时间,一方面,如果您犯了错误并出现段错误或创建竞争条件,则调试会更加困难。某些错误会损坏返回堆栈,并且在像这些系统这样的大型项目中,调试器将无法工作,尤其是在优化时。

Python 是迄今为止最容易调试的,因为大多数错误都可以由解释器检测到,并且您可以在终端上获得有关错误原因和行号的清晰报告。

=============================================================
如果您只是在不涉及网络的本地计算机上运行程序,那么您肯定会通过使用 C 语言获得巨大的性能提升,并且 I/O 延迟也会得到缓解。如果您处于分布式系统中,您会输入不同的时间尺度,其中语言的边缘计算速度变得不太相关。

=============================================================
在大多数基准测试中,Java 比 Python 快 10-20 倍,但大多数用 Java 编写的应用程序都非常慢且占用内存

=============================================================
这是因为它是一种很好的初学者语言,它的语法看起来像伪代码,你可以用更少的代码行做更多的事情。
即使来自 Java 等其他语言的程序员也更喜欢使用 Python 进行编码面试,因为它不太冗长。
它拥有良好的库生态系统,这再次有助于事半功倍。您将找到适合您能想象到的大多数用例的库或包。
研究使用它,因为 python 中有许多可用的科学计算库,这些库是用 C 编写的,以便更快地执行。
其用途广泛,可用于多种应用,例如:

  • 使用 Raspberry Pie 的物联网和自动化
  • 文件处理、解析文档的操作系统级自动化。
  • 网页抓取、浏览器自动化、使用 Selenium 进行网页抓取、B4S、scrapy
  • 使用 Django 进行全栈 Web 开发
  • 使用 Pandas 和 Numpy 进行数据分析,并使用 jupyter 笔记本进行实验
  • Rest API 框架,如用于后端的 FastApi 和 Flask
  • 机器学习、人工智能、自然语言处理。深度学习库 pytorch、TensorFlow 用于生成 AI。

对于上述许多任务,其他编程语言没有替代方案。
如果需要速度,可以通过使用 C 和 python 包装器来实现。对于网络和后端等其他应用程序来说,速度并不是一个大问题,因为网络和数据库有更多瓶颈。