python学习笔记-python解释器,python-python

by admin on 2020年3月26日

哪个版本的 Python 最快?

PyPy 是用Python实现的Python解释器。

python学习笔记-python解释器,python-python

刚开始学习python,首先要了解一下python解释器。

什么是python解释器?
编写python代码保存后,我们会得到一个以.py为扩展名的文本文件。要运行此文件,就需要python解释器去执行.py文件。

这里,我们介绍3种解释器。

1.CPython

当我们从Python官方网站下载并安装好Python
2.7后,我们就直接获得了一个官方版本的解释器:CPython。

这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。
CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。

2.Jython

Jython是运行在Java平台上的python解释器,可以直接把python代码编译成Java字节码执行。

3.PyPy

PyPy是另一个python解释器,它的目标是执行速度。PyPy采用JIT技术,对python代码进行动态编译(注意不是解释),所以可以显著提高python代码的执行速度。
绝大部分

python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的python代码在两种解释器下执行可能会有不同的结果。

如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。

要了解更多的python解释器,见廖雪峰老师的官方网站-python教程。

刚开始学习python,首先要了解一下python解释器。 什么是python解释器?
编写python代码保存后,我们会…

澳门新葡亰网址下载 ,当然,这些问题由多种因素决定,其中的主要的因素是什么呢?我们又如何为自己的应用寻找最快的
Python 版本呢?带着这些问题,Hackermoon 上一位叫 Anthony
Shaw 的作者为我们做了一些测试。

PyPy是,Python开发者为了更好的Hack
Python创建的项目。此外,PyPy比CPython是更加灵活,易于使用和试验,以制定具体的功能在不同情况的实现方法,可以很容易实施。
该项目的目标是,让PyPy比C实现的Python更为容易的适应各个项目和方便裁剪。

Anthony
Shaw :Dimension
Data 的 Talent 集团总监,Python 软件基金会成员,Apache 基金会成员

澳门新葡亰网址下载 1

以下是对作者原文的翻译:

PyPy是:

使用 Python 性能测试套件

正如之前我在 speed.python.org 网站提到的,Python
核心开发团队非常重视性能问题,这对于比较官方基准和 CPython
版本非常有用。

  1. 如图,测试结果很难直观读取

  2. 其中不包含 PyPy

澳门新葡亰网址下载 2

你可以通过执行 pip install performance
命令来下载测试套件,然后执行如下命令:

pyperformance run –python={chosen_python_runtime} -o my_results.json

该命令会针对 Python
的目标版本多次运行一系列“实际”应用程序,并记录测试结果,取其平均值。

本文我对以下官方版本进行了测试:

  • Python 2.7.10

  • Python 3.4.4

  • Python 3.5.4

  • Python 3.6.1

  • Python 3.7 beta 2(译者注:作者进行测试时 Python 3.7
    版本还未正式发布,beta 2
    性能与正式版非常接近,同样具有参考价值。Python 3.7
    正式发布内容请看这里)

同时还测试了 PyPy(5.6)和 PyPy 3(5.10.0)。

  1. 用Python实现的Python解释器;
  2. 使用 Python 语言编写的 Python 语言 (称作 rpython);
  3. 可以将 python 程序编译成原生的 C,CLI (.NET
    2.0),javascript或其他语言运行程序,提高运行速度;
  4. 可以把 rpython 编译成 javascript,用来产生客户端 javascript/编写 ajax
    应用;
  5. 可以将 rpython 程式码流程展示成视图;
  6. 可以透过 JIT 产生自订版本的编译器。

测试结果

我根据这套测试用例进行了测试,你也可以根据自己的情况自己编写一套测试。

我编写了一个简单的脚本,来获得性能数据文,并将它们绘制成了图表。脚本代码你可以在这里找到:

所有图表都以秒为单位,数值越低,表示性能越好。

完整的测试结果及图表展示可请参阅:

PyPy是Armin
Rigo开发的,Python语言的动态编译器,是Psyco的后继项目。PyPy的目的是,做到Psyco没有做到的动态编译。

渲染 HTML 模板

django_html 测试将使用 Django 模板渲染引擎来构建一个 150×150 的 HTML
表格。 它利用了 Django 引擎的 Content 和 Template 类。

澳门新葡亰网址下载 3

如图所示,Python 3.7 比 Python 2.7 快 1.19 倍,但除此之外,其他 Python 3
版本都没有 Python 2.7 快。该结果与 speed.python.org 网站的测试结果一致。

PyPy 的测试结果显示,PyPy 比 CPython 的任何 Python 版本都快,PyPy 3 比
PyPy 慢两倍。Django 2.0 及更高版本已决定放弃对 Python 2 的支持,因此
PyPy 将不再与 Django 2 兼容。

PyPy开始只是研究性质的项目。但是开发非常成熟,在2007年中旬发布了1.0
Release版本后,大家关注的焦点是,能否在2008年出现可供生产环境使用的版本。

启动时间测试

该部分测试解释器的启动时间

澳门新葡亰网址下载 4

如图所示,Python 2.7 是所有测试版本中启动速度最快的。

注:此处暂不讨论 PyPy 的测试结果,文末再谈。

最新的PyPy版本是1.8,兼容Python
2.7.2。可以运行在Linux的32位和64位、MacOSX和Windows的32位平台中,但是基于arm平台的正在开发中。它支持Python语言的所有核心部分以及大多数的Python语言标准库函数模块,并且通过了Python语言的test
suite。与CPython的区别可以去看它的兼容性页面.

加密测试(Crypto):crypto_paes

澳门新葡亰网址下载 5

在这个测试中,Python 2 的速度明显快于 Python 3,因为 Crypto
要求大量数字运算,而 Python 3 没有 32 位整数类型,只有一个长整型(long
integer)。

同样差距比较明显的是,PyPy 3 比 PyPy 慢 5 倍

PyPy还提供了JIT编译器和沙盒功能,因此运行速度比CPython要快,以及可以安全的运行一些不被信任的代码。PyPy还有一个单独的支持微线程的版本。

算法测试:n-queens

澳门新葡亰网址下载 6

结果显示,在 CPython 系列中,Python 3.7 性能最佳。此外,PyPy 3 和 PyPy
测试结果比较接近,PyPy 小胜。

另外,PyPy 也有 每夜构建 版本供开发者测试。

浮点运算测试

“浮点”基准测试需要人工创建繁重的浮点运算应用程序,在这里我们通过
math.cos(),math.sin() 和 math.sqrt() 函数创建,总共创建 10
万个浮点对象。

澳门新葡亰网址下载 7

PyPy
非常适合浮点运算,在大量的数字运算、可预测的类型和方法以及循环上展现了非常优秀的性能。Python
3.7 具有新的方法能快速调用操作码,该操作码正在此测试中刚好用上,表现佳。

PyPy是作为Specific Targeted Research
Projects(特定领域研究项目)从2004年12月到2007年3月,开始接受欧盟的援助。

正则表达式测试

在这项测试中,我选用了 50
个最受欢迎的网页,并记录了所有正则表达式的操作。 每个操作都被赋予权重,该权重是根据页面流行度的估计以及在加载每个页面时执行的次数来计算的。
最后,数据中的字母使用 ROT13
进行编码,其方式不会影响正则表达式与输入的匹配程度。

澳门新葡亰网址下载 8

PyPy 的测试结果让人大跌眼镜,不知道它都经历了些什么……

补充:PyPy 后来看到了这项测试结果,花了几个小时把问题修复了

澳门新葡亰网址下载 9

相关阅读:

Python 3 比 Python 2 快吗?

综上测试所述,答案是 Yes!虽然也有几项测试结果显示 Python 3 比 Python 2
慢:

  • 加密测试:Python 3 的比 Python2 慢 1.35 倍(原因在上文已做解释)

  • 启动时间测试:Python 3 比 Python 2 慢 1.39 倍

但从整体结果来看,Python 3 更快。CPython
核心开发团队曾表示,启动速度问题是他们在 3.8 和 3.9
版本中着重要解决的问题。

PyPy运行Django+MySQL简单教程
http://www.linuxidc.com/Linux/2013-07/87217.htm

PyPy 很快,我要使用它吗?

PyPy 有 JIT 即时编译器,在执行可预测的重复性任务时非常高效,而 Python
性能测试需要多次运行同一段代码来保证准确性,因此,PyPy
面对这种测试性能,表现比 CPython 更佳。

但是,PyPy 的 JIT 编译器的显著缺点就是启动成本高,并且,许多 C
语言扩展程序缺乏兼容性。另外,由于 PyPy 是用 Python 编写的,许多模板在
PyPy 中无法工作,使用者需要时常进行检查。

PyPy 也同样需要面对从 Python2 向 Python3 转变的问题。PyPy3
还不太稳定,PyTest 就已经放弃了对 PyPy3 的支持。

澳门新葡亰网址下载 10

结论

Python 在所有官方版本测试中表现最佳,PyPy 在解释器测试的表现最佳。Python
2 以后会用得越来越少,直到废弃。如果 PyPy 3 的速度始终不能比 PyPy
快,能有所提升也是好的。

编译自:Hackermoon

(文/开源中国)    

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图