您现在的位置是: 首页  >  IT编程

Python学习笔记之二——Python的运行机制,一般人肯定不会

程序员文章站 2022-07-02 12:25:32
前言本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。作者:XX Python解释器简介 解释器是一种让其他程序运行起来的程序,它是代码与机器的计算机硬件之间的软件逻辑层,Python解释器就是能够让Python程序在机器上执行的一 ......

 

 

python解释器简介

  解释器是一种让其他程序运行起来的程序,它是代码与机器的计算机硬件之间的软件逻辑层,python解释器就是能够让python程序在机器上执行的一套程序。 
当我们执行写好的python代码时,python解释器会执行两个步骤

  1. 把原始代码编译成字节码 
      编译后的字节码是特定于python的一种表现形式,它不是二进制的机器码,需要进一步编译才能被机器执行,这也是python代码无法运行的像c/c++ 一样快的原因。如果python进程在机器上拥有写入权限,那么它将把程序的字节码保存为一个以.pyc 为扩展名的文件,如果python无法在机器上写入字节码,那么字节码将会在内存中生成并在程序结束时自动丢弃。在构建程序的时候最好给python赋上在计算机上写的权限,这样只要源代码没有改变,生成的.pyc文件可以重复利用,提高执行效率。
  2. 把编译好的字节码转发到python虚拟机(pvm)中进行执行 ,另外如果你在python学习过程中。不懂的问题,可以去去小编的python交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新python教程项目,多跟里面大佬交流。进步会更快!
      pvm是 python virtual machine的简称,它是python的运行引擎,是python系统的一部分,它是迭代运行字节码指令的一个大循环、一个接一个地完成操作。 
    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编译器:它生成机器代码将数据类型精简至你程序实际上所使用的类型。 另外如果你在python学习过程中。不懂的问题,可以去去小编的python交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新python教程项目,多跟里面大佬交流。进步会更快!
  psyco是用纯python的算法代码实现的。这点尤为重要,那些为了优化往往需要迁移到c的那部分代码,使用了psyco后,这样的迁移就没有必要了。