Python解释器简介

解释器是一种让其他程序运行起来的程序,它是代码与机器的计算机硬件之间的软件逻辑层,Python解释器就是能够让Python程序在机器上执行的一套程序。

当我们执行写好的Python代码时,Python解释器会执行两个步骤

1、把原始代码编译成字节码

编译后的字节码是特定于Python的一种表现形式,它不是二进制的机器码,需要进一步编译才能被机器执行,这也是Python代码无法运行的像C/C++ 一样快的原因。如果Python进程在机器上拥有写入权限,那么它将把程序的字节码保存为一个以.pyc 为扩展名的文件,如果Python无法在机器上写入字节码,那么字节码将会在内存中生成并在程序结束时自动丢弃。在构建程序的时候最好给Python赋上在计算机上写的权限,这样只要源代码没有改变,生成的.pyc文件可以重复利用,提高执行效率。

2、把编译好的字节码转发到Python虚拟机(PVM)中进行执行

PVM是 Python Virtual Machine的简称,它是Python的运行引擎,是Python系统的一部分,它是迭代运行字节码指令的一个大循环、一个接一个地完成操作。

Python 解释器的几种实现版本

Python解释器有三种主要的实现方式,CPython、Jython和IronPython 三种实现方式 。

1、CPython

CPython 是标准的实现,其它的都是有特定目标的。

CPython 是由C语言编写的,它是大多数Linux和Mac OS X机器预装的Python解释器,也是所有Python解释器中运行最快、最完整、最健全的。

2、Jython

Jython 是一种Python语言的替代实现方式,其目的是为了与Java编程语言集成,Jython 包含了Java类,这些类编译Python源代码、形成Java字节码,并将得到的字节码映射到Java虚拟机(JVM)上。因为Jython要比CPython 慢而且也不够健壮,它往往看作是一个主要面向寻找Java代码前端脚本语言的Java开发者的一个有趣的工具。

3、IronPython

IronPython 设计的目的是让Python 程序可以与Windows 平台上的.NET 框架以及与之对应的Linux的上开源的Mono编写成的应用集成。

Psyco 实时编译器

psyco 系统不是Python的另一种实现方式,而是Python字节码执行模块的一个扩展组件,它可以让程序运行的更快。它是一个PVM的增强工具,这个工具收集并使用信息,在程序运行时,可以将部分程序的字节码转换成底层的真正的二进制机器代码,从而实现更快的执行速度。在开发个过程中,Psyco无需代码的修改或独立的编译步骤即可完成这一转换。

概括地讲,就是当程序运行时,Psyco收集了正在传递过程中的对象的类别信息,这些信息可以用来裁剪对象的类型,从而生成高效的机器代码。机器代码一旦生成,就替代了对应的原始字节码,从而加快程序的整体执行速度。一些通过Psyco优化的Python代码的执行速度可以像编译好的C代码一样快。

因为字节码的转换与程序运行同时发生,所以Pysco往往被看做是一个即时编译器(JIT)。实际上Psyco是一个专有的JIT编译器:它生成机器代码将数据类型精简至你程序实际上所使用的类型。

Psyco是用纯Python的算法代码实现的。这点尤为重要,那些为了优化往往需要迁移到C的那部分代码,使用了Psyco后,这样的迁移就没有必要了。

python运行的原理_Python运行机制(转)相关推荐

  1. python文件闪退_python运行窗口闪退(python打开文件出现闪退什么原因)

    有时候,我们在运行python程序的时候会闪退,到底是什么原因呢?python文件是以.py结尾的,可以自己在python环境下运行的.对于这种闪退的情况,大概可以从以下几个方面分析. 第一步 首先找 ...

  2. python程序的原理_Python程序的执行原理(转)

    1. 过程概述 Python先把代码(.py文件)编译成字节码,交给字节码虚拟机,然后虚拟机一条一条执行字节码指令,从而完成程序的执行. 2. 字节码 字节码在Python虚拟机程序里对应的是PyCo ...

  3. 简述python程序执行原理_Python程序的执行原理(1)

    test.py的指令序列 func函数的指令序列 第一列表示以下几个指令在py文件中的行号; 第二列是该指令在指令序列co_code里的偏移量; 第三列是指令opcode的名称,分为有操作数和无操作数 ...

  4. python解析器原理_Python程序运行原理图文解析

    本文研究的主要是Python程序运行原理,具体介绍如下. 编译型语言(C语言为例) 动态型语言 一个程序是如何运行起来的?比如下面的代码 #othermodule.py def add(a, b): ...

  5. python需要的环境_python运行环境是什么

    1.准备好安装包 1)上python官网下载python运行环境(https://www.python.org/downloads/),目前比较稳定的是python-3.5.2 2)上pycharm官 ...

  6. python 运行时 变量_python运行过程,变量,符号

    1,python运行过程 2,编译型,解释型 编译型,  C,  C++     ------>准备好的一桌子菜,直接吃 一次性把你的代码编译生成机器能够识别的二进制码 解释型:      py ...

  7. python运行没有图_python – 运行没有图形的Salome脚本

    我有类似的愿望,但经过多次搜索,我最终得出的结论是,我们都想做的事情并非完全可能. 为了在命令行上运行salome脚本而不使用GUI salome -t python script.py 或者干脆 s ...

  8. python cv2模块安装_Python运行脚本前,自动安装需要的模块包

    在服务器上部署Python程序时,往往需要先安装很多需要的模块包.如果一个一个安装就会出现忘记的情况.或者新增加某个新的模块时,也可能会忘记安装. 这里先讲一下怎么通过Python程序自动安装. 以下 ...

  9. python对象底层原理_Python字符串对象实现原理详解

    在Python世界中将对象分为两种:一种是定长对象,比如整数,整数对象定义的时候就能确定它所占用的内存空间大小,另一种是变长对象,在对象定义时并不知道是多少,比如:str,list, set, dic ...

最新文章

  1. php多表存储,php – MySql在一个单元格中存储另一个表的多个引用并选择它?
  2. Linux 的相关介绍
  3. 51信用卡 Android自动埋点实践
  4. matlab二进制操作,[转载]Matlab二进制类型数据相关操作
  5. 学linux做笔记本,linux学习之笔记本安装CentOS7
  6. VirtualBox – Error In supR3HardenedWinReSpawn 问题解决办法
  7. (转)java中使用memcache
  8. 2012年中国系统架构师大会 即将开幕
  9. php微博api发布微博代码,使用新浪微博API的OAuth认证发布微博实例
  10. kX3552 + HiFi级播放器 + wifi无线保真= 实战HiFi音乐娱乐欣赏
  11. python xlwt用法_24.python中xlwt模块用法详解
  12. 6.29--6.30郭天祥老师课程中的一些错误与我的存疑
  13. 几点个人信息安全感受
  14. 计算机键盘标注,电脑键盘上怎么打√和×
  15. http状态码全解读
  16. 如何制作公众号首图?教你一键套用图片模板
  17. 2022-2028年全球及中国汽车保险丝行业投资前景分析
  18. War3快捷键大全—常用的键
  19. IDEA的使用大全(快捷键、TomCat、Maven......)
  20. python 使用 numpy 判断两个向量是否平行

热门文章

  1. 没有shell63号单元_苏教版15年级数学上册第七单元整理与复习+同步练习
  2. python装饰器 property_python中property和setter装饰器用法
  3. 汉诺塔-递归算法深入理解
  4. 一文带你了解java面向对象的三大特性:继承、封装、多态
  5. 2020大学计算机知到答案,2020年_知到_大学计算机(济南大学)_网课答案
  6. c语言定义链式队列用菜单,数据结构之---C语言实现链式队列
  7. python oracle 运维,mysql oracle python连接
  8. Arduino--ESP8266物联网WIFI模块(贝壳物联)--数据上传服务器(单数据接口)
  9. java语言主要因为具备了,Java语言的魅力
  10. linux python默认安装目录_非root用户在linux服务器自己目录下安装需要的python版本及其模块...