美文网首页
Python编译器

Python编译器

作者: 强子8910 | 来源:发表于2020-03-03 10:37 被阅读0次

编译器,又叫解释器。简单讲,就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器(Linker) → 可执行程序 (executables)。

CPython

当我们从Python官方网站下载并安装好Python 后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。

CPython是用C语言实现Pyhon,是目前应用最广泛的解释器。最新的语言特性都是在这个上面先实现,基本包含了所有第三方库支持,但是CPython有几个缺陷,一是全局锁使Python在多线程效能上表现不佳,二是CPython无法支持JIT(即时编译),导致其执行速度不及Java和Javascipt等语言。

IPython

IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。

CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。

PyPy

PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译,所以可以显著提高Python代码的执行速度。

绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点

PyPy针对CPython的缺点进行了各方面的改良,性能得到很大的提升。最重要的一点就是Pypy集成了JIT。但是,Pypy无法支持官方的C/Python API,导致无法使用例如Numpy,Scipy等重要的第三方库。而PyPy与CPython的不同在于,别的一些python实现如CPython是使用解释执行的方式,这样的实现方式在性能上是很凄惨的。而PyPy使用了JIT(即时编译)技术,在性能上得到了提升。

作者:Mangogo哥
链接:https://www.zhihu.com/question/20005950/answer/366367991
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Jython

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

IronPython

IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

小结

Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。

1、由于Python是动态编译的语言,和C/C++、Java或者Kotlin等静态语言不同,它是在运行时一句一句代码地边编译边执行的,而Java是提前将高级语言编译成了JVM字节码,运行时直接通过JVM和机器打交道,所以进行密集计算时运行速度远高于动态编译语言。

2、PyPy,它使用了JIT(即时编译)技术,混合了动态编译和静态编译的特性,仍然是一句一句编译源代码,但是会将翻译过的代码缓存起来以降低性能损耗。相对于静态编译代码,即时编译的代码可以处理延迟绑定并增强安全性。绝大部分 Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的

作者:Mangogo哥
链接:https://www.zhihu.com/question/20005950/answer/366367991
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章

  • # 加速python运行-numba

    加速python运行-numba numba是一个用于编译Python数组和数值计算函数的编译器,这个编译器能够大...

  • Python笔记

    人生苦短,我用Python 编译器:解释器 编译器 Python属于解释型语言,读取一行,翻译一行,执行一行。 ...

  • ubuntu系统中同时存在python2和python3

    将默认的python编译器从2改为3 python --version 查看当前python平台 默认pytho...

  • Python的认识

    人生苦短,我用 Python —— Life is short, you need Python 解释器:编译器翻...

  • 关于python里面不能传入汉字

    关于python里面不能传入汉字类型的问题,我是用的时pycham编译器,不过大多python编译器都一样,下面我...

  • python学习第一天

    python的环境安装 首先安装python的环境,因为任何的编译器都需要一个完整的编译环境去支持这个编译器的正常...

  • 编码问题处理

    Python 编译器能循环处理的编码只有unicode

  • 初始Python

    1.Python科普 python科普(编译器、解释器)python作者:吉多·范罗苏姆(Guido van Ro...

  • 二十五、LLVM

    什么是编译器 LLVM概述 LLVM案例体验 LLVM源码 & 编译流程 1 什么是编译器? 1.1 Python...

  • 小试牛刀--Python爬虫BeautifulSoup使用

    python爬数据小试牛刀--beautifulSoup使用 1.环境配置 编译环境:python 2.7 编译器...

网友评论

      本文标题:Python编译器

      本文链接:https://www.haomeiwen.com/subject/reaflhtx.html