Python-pvm解释器运行程序原理
Python解释器简介
一般来说,我们讨论Python,是将其作为一门编程语言来详解.但是,从实际情况来看,Python也是一个名为解释器的软件包.解释器是可以让程序运行起来一套程序,具有独立性.所以当你写了一段代码之后,Python解释器读取程序,将其转化为命令执行,得出结果.
总的来说,解释器就是代码与计算机硬件之间的软件逻辑层.
Python程序执行过程
就简单的形式而言,一个Python程序仅仅是一个包含Python代码的文本文件.后缀是.py的文件,也是我们平常所熟知的Python脚本,但当我们运行Python脚本时,都进行了哪些动作,这里小编给大家讲解一下.
1.字节码编译
当程序运行时,Python内部会将源代码(.py文件中的程序)编译成所谓的字节码的形式.而且字节码是源代码底层的,与平台无关的表现形式(如果Python程序在机器上有写入权限,就可以在源代码同目录下看到编译后的文件后缀为.pyc的文件).总的来说,就是将每一行源代码语句从上到下翻译过来,翻译成一组字节码的指令.这些字节码可以提高执行速度;比起源代码语句,字节码要执行快的多
Python这样保存字节码是一种作为启动速度的优化.下一次运行程序时,如果你还停留在上一次修改记录的话,就会直接跳过编译直接加载.pyc文件.
2.Python的虚拟机(PVM)
程序被编译成字节码之后,就会被加载到通常被称为虚拟机的一个东西上(Virtual Machine)来执行,Python的虚拟机称为PVM(Python Virtual Machine).事实上,PVM就是迭代运行(类似for循环)字节码指令,然后操作系统会去执行这些命令.PVM是Python的运行引擎,它时常表现为Python系统的一部分,并且它是实际运行脚本的组件.
Python解释器的种类
1.CPython
我们平常所熟知的,也是原始的,标准的Python实现方式通常称为cpython.我们一般开发所使用就是这个解释器.它运行速度最快,最完整而且也最健全.
2.Jython
Jython(最初为JPython)是一种Python语言的替代实现方式,其目的是为了与java编程语言集成所用,Jython包含了Java类,这些类编译成Python代码,形成Java字节码,并将其运行在Java的虚拟机上(JVM).平常写程序时,编写Python语句;
Jython的目标就是让Python代码能够脚本化Java应用程序;它实现了与Java的无缝集成.但是Jython要比Cpython慢而且不够健壮,它往往看做是一个主要面向寻找Java代码前端脚本语言的Java开发者的一个工具.
3.IronPython
IronPython可以与windows平台上的.NET框架以及Linux上的开源的Mono编写成的应用相集成.IronPython允许Python程序既可以用作客户端也可以用作服务器端的组件,还可以与其他.NET的语言进行通信.
Python-pvm解释器运行程序原理相关推荐
- python是如何运行程序的?
从实现方式上看,python是一个名为解释器的软件包.解释器是一种让其他程序运行起来的程序.当编写一段python程序,Pyhton解释器将读取程序,并按照其中的命令执行,得出结果.实际上,解释器是代 ...
- python监控linux运行程序_python linux监控程序
Pyinotify – Linux中实时监控文件系统更改 Pyinotify 是一个简单而实用的 Python 模块,它用于通过 inotify 实时监控Linux文件系统的更改.用于在Linux中实 ...
- python代码变成运行程序_用Python脚本转换成windows的可执行程序
下载并运行与你所安装的Python对应的py2exe版本的 installer,这将安装py2exe和相应的例子:这些例子被安装在lib\site-packages\py2exe\samples目录下 ...
- python基础教程运行程序_Python入门基础教程:WSGI
原标题:Python入门基础教程:WSGI WSGI 简介 WSGI 是什么 WSGI 是 Python Web Server Gateway Interface 的缩写,是描述 Web 服务器与 P ...
- python 实现 定时运行程序 time、datetime函数
1.time模块 使用 Python 的 time 模块来实现定时运行. 例如,你可以使用 time.sleep() 函数来让程序暂停一段时间,然后使用 time.time() 函数来获取当前时间戳. ...
- python代码变成运行程序_python脚本转化单个exe执行程序
操作系统平台: Windows Server 2003 R2 Enterprise SP2 X86简体中文版 1.ActivePython-2.7.5.6-win32-x86.msi 2.setupt ...
- python监控linux运行程序_如何在linux/tcl/python中监控正在打开或启动的应用程序?...
我正在尝试构建一个面板应用程序,类似于avant window navigator或UbuntuUnity.在 我的问题是,一旦我用预先定义好的应用程序构建了面板,当应用程序打开或启动时,如何向面板添 ...
- python绿色版运行程序_Python打包exe运行程序,分享你的技术成果!
本文转载于公众号:你想要
- autoDL租用服务器运行程序全过程
autoDL是一个不错的GPU租用平台,最近要跑好多NLP相关的程序,想再租一个配置稍高一点的服务器来使用.这里记录自己配置环境到运行程序的全过程. 个人的邀请连接:AutoDL 文章目录 选择服务器 ...
最新文章
- Java 程序员如何使用 Shiro 框架
- excel求期望_商务数据分析考试:决策树分析(Excel)-安聪
- python猜单词游戏_磁盘空间不足。
- 百度机器翻译已经进化到什么程度?
- Some Essential JavaScript Questions And Answers(2)
- java将对象 缓存_ehcache java 对象缓存怎么实现
- git安装 perl ubuntu_ubuntu下安装git
- mysql join buffer_MySQL cache之join buffer的优化
- 开放式式商业模式_什么是开放式领导?
- 想拥有高清壁纸不用那么麻烦!
- 嵌入式系统功能概要设计说明_嵌入式软件架构设计实际该怎么做?
- 【Redis】Redis学习(四) Redis Sentinel模式详解
- Java探索之旅(18)——多线程(2)
- lduan server 2012 RMS 群集安装 上(十四)
- android slidemenu 折叠效果,左侧菜单栏折叠展开效果-超级简单
- 教务管理系统数据字典mysql_数据库大作业_-教务管理系统
- matlab雷达辐射源,雷达辐射源PDW数据分析系统的制作方法
- qq文件服务器怎么用,怎样使用qq文件助手功能图文教程
- EDA安装------Centos7安装ANSYS
- 2019/04/12 华为通用软件开发工程师现场面试(offer到手)