Python解释器

        Python是一个语言前端,而他的实现可以有很多种,就是说可以有很多解释方式。但是我们平常所说的Python是包括了CPython这个解释器的Python。目前有很多解释器,像JythonPyPyironPythonStackless。要选择一个合适的解释器,这里给出了简短的比较。

       传统的CPython是如下的解释方式:(跟Java类似)

pythonrun
Python Execution Model, From:Learning Python

       Jython是把Python源码转为Java字节码,然后由JVM运行。ironPython是.NET。

       这里最复杂的是PyPy。PyPy官网的解释有点看不懂。然后找到了图文并茂的解释。PyPy的特点是运行速度快,这个原因的关键因素是JIT。JIT根据代码的运行,记录相关操作,比如记录数据类型,函数內联等,然后进行优化后编译到机器码。(可能理解有误)。PyPy自带的编译器跟JIT关联就能产生高效的代码。Javascript,Java等都有JIT优化。下面是一张流程图,盗自Why Are There So Many Pythons

toptal-blog-B
PyPy Excution Model, From:www.toptal.com

       对于我来说,CPython是足够用了。所以先不折腾PyPy。

PS:Python也可以打包为可执行文件。原理是把Python解释器也一起打包进去。这个功能是Python自带的,叫freeze。网上随便一搜就有了。

链接:

  1. stackoverflow
  2. Why So Many Pythons
  3. Translation