好的,但缺点是什么? | 第一部分 开始 —— 第 1 章: python q&a 环节 |《学习 python:强大的面向对象编程(第 5 版)》| python 技术论坛-江南app体育官方入口

未匹配的标注

在使用 python 21 年,撰写相关文章18年,讲授它 16 年后,我发现, python 唯一显著通用的缺点就是目前的实现方案的执行速度可能不会总是像全编译和底层语言如c、 c 那么快。虽然目前这种情况相对少,但对一些任务,仍然可能偶尔需要使用底层语言(更直接映射到底层硬件架构上)来达到“更接近底层硬件”的目的。

在本书,我们稍后将谈论实现概念的细节。总之,当前 python 的标准实现是将源码语句编译(也就是翻译)成一个名为字节码的中间格式,然后再解释字节码。字节码提供了可移植性。它是平台无关格式。然而,因为 python 通常不会一直编译到二进制代码(如对英特尔芯片的指引),一些程序在 python 中将会比在全编译语言如 c 中运行的更慢。 在下一章讨论的 pypy 系统能够通过在程序运行时进一步编译,在一些代码上达到 10 倍和到 100 倍的速度提升。但是,它是一个独立的,可选的实现。

是否关注执行速度的差别,取决于写的是哪种程序。 python 已经优化过许多次。在大部分的应用领域, python 独自运行得足够快。而且,只要当你在开始你脚本中做一些“实际的”事情,比如处理一个文件,或者构建一个图形用户界面(gui),你的程序实际上将是在 c 的速度运行。这些任务会立即分配给 python 解释器内部的编译好的 c 代码。更重要的是, python 快速开发的优势通常远比任何执行速度上的损失要重要得多——特别是考虑到现代计算机的速度。

然而,即使在当前的 cpu 速度,仍然有一些领域确实需要优化执行速度。比如数字编程和动画,它们的核心数字组件经常需要运行在至少c的速度(甚至更好)。如果你在这个领域工作,你仍然可以使用python——简单地将需要优化速度的应用程序的部分分割到编译的插件中,然后将它们链接到你的系统,以用于 python 脚本。

我们不会在本书中谈论很多扩展,但是这真的确实是我们之前讨论过的 python 作为控制语言角色的一个实例。双重语言策略的一个重要例子是 python 的 numpy 数字编程扩展。通过在 python 语言中将编译和优化好的数字扩展库结合起来, numpy 把 python 变成了一个高效易用的数字编程工具。当需要时,扩展提供了强大的优化工具。

本文章首发在 江南app体育官方入口 网站上。

上一篇 下一篇
讨论数量: 0



暂无话题~
网站地图