【问题标题】:why do people say python is slow because it is interpreted? It has .pyc files [closed]为什么人们说python很慢是因为它被解释了?它有 .pyc 文件[关闭]
【发布时间】:2015-07-02 17:20:58
【问题描述】:

为什么人们在需要优化的时候不直接使用编译好的 python 文件呢?这样代码就不必被解释然后编译了。

我有什么遗漏吗?在我看来,这是一个简单的问题。

【问题讨论】:

  • Python 编译成字节码,然后被解释。该字节码缓存在 pyc 文件中并自动使用。在这里“慢”的是解释。
  • 还有其他解决方案,例如JIT CompilerPyPy 这样做。
  • 人们说它很慢,因为它是一种高级语言。

标签: python interpreter compiled


【解决方案1】:

我相信这足以纠正你的误解。

从 .pyc 或 .pyo 文件中读取程序的运行速度并不比从 .py 文件中读取时快; .pyc 或 .pyo 文件唯一更快的是它们的加载速度。

来源:https://docs.python.org/2/tutorial/modules.html#packages

【讨论】:

  • @sfdcfox 没有“当然不是”。速度是否重要取决于您在做什么。
  • @sfdcfox 尝试在解释语言中运行大规模物理模拟,然后在编译语言中再次尝试。从解释代码开始 - 您将有足够的时间编写编译代码、运行它并在解释代码完成之前分析数据。
  • 这是有争议的......大多数解释性语言在现代硬件和现代编译器上的运行速度“几乎”与 C 一样快。但是,当然,我必须指出编程的“正确工具”条款。你不能像锯一样有效地使用螺丝刀,当你需要低级语言(如 C)的硬件加速时,你也不能正确使用 Python。经验丰富的开发人员不会编写实时Python 中的操作系统也是如此,因为它没有任何意义。我的评论只是想说当“可移植性”胜过“速度”时,Python 是完全可以接受的。
  • @sfdcfox: 尝试过一些 C 或 C++ 或 fortran 或......曾经吗?是的,您可以用这些语言编写不可移植的代码,但对于 Java、python、...
  • @Deduplicator 我编写了十几种或更多语言,其中许多是我经常使用的。但我们不是来逐条列出我的简历的。我的观点是(现在仍然是),假设它适合该任务, Python“通常”比 C 更便携,但代价是性能损失了一些可接受的小。 Java 也“通常”比 C 更可移植,同样与 C 相比,速度损失相当。另外,一个称职的 Python 开发人员可以编写比不称职的 C 开发人员运行得更快的代码,并且仍然可以在多个平台上运行。跨度>
【解决方案2】:

即使从 pyc 文件中读取 Python 也会被解释。正如this 回答中已经说过的那样,pyc-files 只会加速程序启动,而不是执行。存储在 pyc 文件中的命令不是机器代码,它只是 python 级别的命令,无论如何都会被 python 解释器解释。另一方面,当你使用用 C 编写的程序时,该程序的可执行文件由机器代码组成,由 CPU 直接“解释”。

【讨论】:

    猜你喜欢
    • 2011-02-01
    • 2011-03-01
    • 2021-08-19
    • 1970-01-01
    • 2011-04-15
    • 2011-01-02
    • 1970-01-01
    相关资源
    最近更新 更多