返回顶部
首页 > 资讯 > 后端开发 > Python >4 个快速的 Python 编译器 f
  • 581
分享到

4 个快速的 Python 编译器 f

编译器快速Python 2023-01-31 08:01:16 581人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

简评:python 和其他的解释型语言一样经常被吐槽性能不行,所以开发人员为了提升性能创建了不少编译器,本文则选取其中的四个做了基准测试。 Python 其实是一种相当快的语言,但它并不像编译型语言那么快。 这是因为官方实现的 CPyth

简评:python 和其他的解释型语言一样经常被吐槽性能不行,所以开发人员为了提升性能创建了不少编译器,本文则选取其中的四个做了基准测试

Python 其实是一种相当快的语言,但它并不像编译型语言那么快。 这是因为官方实现的 CPython 解释执行的,更准确地说,是 Python 代码被编译为字节码,然后进行解释。这对学习是很有好处的,因为可以在 Python REPL 中运行代码并立即查看结果,而不必编译和执行。 但是由于 Python 程序并没有那么快,开发人员多年来创建了几个 Python 的编译器,包括 IronPython 和 Jython。

快速的性能并不是编译的唯一原因,可能诸如 Python 之类的脚本语言最大的缺点是你需要隐式地向客户提供源代码。

我想比较同一平台上的一些 Python 编译器,特别是那些支持 Python 3.x 的编译器。最后,我选择了四个,都在 ubuntu linux上运行,他们是 Nuitka,PyPy,Cython 和 cx_Freeze。

比较 Python 编译器

有人已经完成了创建 Python 基准测试的工作。我选择了 PyStone,这是 Python 的创建者Guido van Rossum 对 C 程序的翻译(而 C 程序本身是 Ada 程序的翻译)。 我在 GitHub 上找到了开发人员 Christopher Arndt 的转换版本,它能够兼容 Python 3。 下面是 Pystone 的CPython(即标准 Python)性能:

Python 2.7.15Rc1 2 : 272,647 pystones/second.
Python 3.6.5       : 175,817

正如你所看到的,Python 2 和 Python 3 之间有很大的区别(每秒 Pystones 越多越好)。在下面的细分中,所有的 Python 编译器都针对 Python 3 进行基准测试。

Nuitka

尽管可以按照下载页面上的说明操作,但 Ubuntu 上的只需:

$ sudo apt install Nuitka

Nuitka 还需要一个 C 编译器,所以我下载了 clang。可以使用以下方法安装它:

$ sudo apt install clang

Nuitka 默认使用 GCc,但是一个参数允许你使用 clang,所以我用两者测试了它。 clang 编译器是 llvm 系列的一部分,旨在作为 gcc 的现代替代品。使用 gcc 编译 pystone.py 就像这个(第一行)一样简单,或者使用 clang(第二行),并使用链接时间优化 gcc(第三行):

$ nuitka pystone.py
$ nuitka pystone.py --clang
$ nuitka pystone.py --lto

编译(大约 10 秒钟)完成后,我从终端运行了 pystone:

$ ./pystone.exe 500000 

结果是

Size  Execution pystones/sec
1. 223.176 Kb  597,000
2. 195,424 Kb  610,000
3. 194.2   kb  600,000

这些是 5 次运行的平均值,我尽可能多地关闭了进程。

PyPy

Guido van Rossum 曾经说过:「如果你希望你的代码运行得更快,你应该只使用PyPy。」我将编译好的二进制文件下载到一个文件夹中,并将 pystone.py 复制到其下的 bin 文件夹中。然后我像这样运行:

$ ./pypy3.5 pystone.py

结果是惊人的 1,776,001 pystones/sec,几乎是 Nuitka 的三倍。

PyPy 使用即时编译器并做了一些非常巧妙的东西来实现它的速度。根据基准测试的报告,它平均比 CPython 快 7.6 倍。 我很容易相信。 唯一(轻微)的缺点是它总是落后于 Python 版本。

生成一个 EXE 需要一些工作,你必须将你的 Python 编写成一个名为 RPython 的子集。

Cython

Cython 不仅仅是 Python 的编译器,它是 Python 的超集,支持与 C / c++ 的互操作性。 CPython是用 C 编写的,所以它是一种通常可以很好地与 Python 混编的语言。

使用 Cython 进行设置有点繁琐,它不像 Nuitka 那样开箱即用。首先,必须从扩展名为 .pyx的 Python 文件开始,你运行 Cython 来创建一个 pystone.c 文件:

$ cython pystone.pyx --embed

不要忽略 –embed 参数,接下来,你用这条命令编译 pystone.c:

$ gcc $(python3-config --includes) pystone.c -lpython3.6m -o pystone.exe

如果遇到任何错误,例如「找不到 -lpython 版本」,则可能是因为你的 Python 版本。要查看安装的版本,请运行以下命令:

$ pkg-config --cflags python3

毕竟,Cython 只给出 228,527 pystones/sec,但是,Cython 需要你做一些指定变量类型的工作。Python 是一种动态语言,因此没有指定类型, Cython 使用静态编译,使用 C 类型变量可以产生更好的优化代码。 (文档相当广泛,需要阅读。)

Size  Execution pystones/sec
1. 219,552 Kb  228,527
cx_freeze

这是一套用于将 Python 脚本「冻结」为可执行文件的脚本和模块,可以在gitHub上找到。我安装了它并创建了一个冻结文件夹来管理内容:

$ sudo pip3 install cx_Freeze --upgrade

我在安装脚本中发现的一个问题是缺少“lz”的错误。你需要安装 zlib 运行它来安装它:

$ sudo apt install zlib1g-dev

之后,cx_Freeze 命令使用 pystone.py 脚本创建了一个 dist 文件夹,其中包含一个 lib 文件夹,一个 5MB 的 lib 文件和 pystone 应用程序文件:

$ cxfreeze pystone.py --target-dir dist
Size  Execution pystones/sec
1. 10,216   174,822

不是最快的性能,因为它与 CPython 的速度相同。 (Python 冻结包括将应用程序与所需的Python 元素一起放在单个文件(或文件夹)中,而不是编译,这意味着目标不需要Python。)

结论

我对 PyPy 的表现感到敬畏,编译非常快,在按下回车键后不到一秒就产生了结果。 如果你想要一个 exe,我推荐 Nuitka,这是一个不费吹灰之力的编译,运行速度比 CPython 快。你也可以自己试用这些 Python 编译器,看看哪种方法最适合特定需求。

原文:4 Fast Python Compilers for 2018

--结束END--

本文标题: 4 个快速的 Python 编译器 f

本文链接: https://lsjlt.com/news/193188.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 4 个快速的 Python 编译器 f
    简评:Python 和其他的解释型语言一样经常被吐槽性能不行,所以开发人员为了提升性能创建了不少编译器,本文则选取其中的四个做了基准测试。 Python 其实是一种相当快的语言,但它并不像编译型语言那么快。 这是因为官方实现的 CPyth...
    99+
    2023-01-31
    编译器 快速 Python
  • Android加快你的编译速度
    工欲善其事,必先利其器。如果每次运行项目都要花费5-10分钟,那人的心态都要崩了。 Gradle构建流程 Gradle 的生命周期可以分为大的三个部分:初始化阶段(Initialization Pha...
    99+
    2023-09-21
    android gradle android studio
  • 使用cache加快编译速度的命令详解
    目录Ubuntu 安装ccache使用libzmq测试ccacheUbuntu 安装ccache sudo apt-get install ccache安装完后确认安装执行which...
    99+
    2024-04-02
  • Python静态编译器的用法
    本篇内容介绍了“Python静态编译器的用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!代码如下:   &n...
    99+
    2023-06-17
  • Python编程初学者的快速起步:5个基本代码示例
    快速入门Python编程:5个基础代码案例 Python是一种流行的高级编程语言,它简单易学,具有丰富的库和功能,被广泛应用于数据分析、机器学习、网站开发等领域。在本文中,我将向你介绍5个基础的Python代码案例,帮助你快速入...
    99+
    2024-01-13
  • Python编辑器的编译方法是什么
    Python编辑器的编译方法是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。从Python编辑器中也可调用编译器以及与它拥有的共用的程序,这样的话程序员就无需离开编辑器就可...
    99+
    2023-06-17
  • go语言的编译器哪个好用
    Go语言的主要编译器是官方提供的Go编译器“gc”和LLVM-based的“Gollvm”编译器:1、gc,稳定性较高,能够完整支持Go语言的各种特性,得到了广泛的社区支持和反馈,但是生成的代码大小可能会比较大;2、Gollvm,能够利用L...
    99+
    2023-12-13
    go语言编译器 go语言 Golang
  • Python GUI 编程的终极秘诀:快速上手
    ...
    99+
    2024-04-02
  • Linux中的python编译器怎么用
    本篇内容主要讲解“Linux中的python编译器怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux中的python编译器怎么用”吧!1. PyCharmPyCharm是一个功能强大...
    99+
    2023-06-28
  • 【Python】快速创建一个简易 HTTP 服务器(http.server)
    引言 http.server 是 socketserver.TCPServer 的子类,它在 HTTP 套接字上创建和监听,并将请求分派给处理程序。本文是关于如何使用 Python 的 http.s...
    99+
    2023-09-28
    python http server
  • 怎么快速打包一个新的Python模块
    今天小编给大家分享一下怎么快速打包一个新的Python模块的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。当你安装一个应用程序...
    99+
    2023-07-06
  • 【Pycharm技巧】:Pycharm删除多个不需要的python版本编译器
    项目场景:         有时候使用pycharm的时候发现设置了好几个python版本的编译器,大家要弄清楚Pycharm是Python编程的生产力工具,并不是Python,底层还是需要Python编译器进行编译程序,Pychar...
    99+
    2023-09-18
    python pycharm 开发语言
  • Python 动态编译器PyPy对比其他动态编译器的优点是什么
    这期内容当中小编将会给大家带来有关Python 动态编译器PyPy对比其他动态编译器的优点是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。该项目的目标是,让PyPy比C实现的Python更为容易的适应...
    99+
    2023-06-17
  • Docker-Compose 容器集群的快速编排方法
    目录Docker-Compose 容器集群的快速编排Docker-compose 简介compose 部署Docker Compose 环境安装YAML 文件格式及编写注意事项Docker compose 常用命令字段编写Docker Co...
    99+
    2024-04-02
  • 快速安装PyCharm,开始高效的Python编程之旅
    一键安装PyCharm,开启高效Python编程之旅,需要具体代码示例 随着Python语言的流行和应用场景的不断扩大,越来越多的开发者选择使用Python进行编程工作。而对于Python编程来说,一个好用且高效的集成开发环境(...
    99+
    2024-02-02
    pycharm 安装 python编程
  • Python快速实现一个线程池的示例代码
    目录楔子Future 对象提交函数自动创建 Future 对象future.set_result 到底干了什么事情提交多个函数使用 map 来提交多个函数按照顺序等待执行取消一个函数...
    99+
    2024-04-02
  • 如何快速的生成一个Python爬虫请求头
    今天就跟大家聊聊有关如何快速的生成一个Python爬虫请求头,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Py...
    99+
    2023-06-06
  • vs2022重新编译opencv-python cuda加速时报错的问题解决
    今天重新编译了一下Windows的opencv-python的cuda加速 在生成INSTALL的时候报错 严重性    代码   ...
    99+
    2024-04-02
  • React框架快速实现简易的Markdown编辑器
    目录前言需要实现的功能具体实现一、布局二、markdown语法解析三、markdown主题样式四、代码块高亮五、同步滚动bug1:bug2:六、工具栏七、补充八、最后前言 最近我在项...
    99+
    2024-04-02
  • 4个最流行的Linux平台开源代码编辑器
      正在寻找Linux平台最棒的代码编辑器如果你询问那些很早就玩Linux的人,他们会回答是Vi, Vim, Emacs, Nano等。但是,我今天不讨论那些。我将谈论一些新时代尖端、漂亮、时髦而且十分强大, 功...
    99+
    2022-06-03
    Linux 开源 编辑器
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作