python虚拟机直接加载字节码运行程序_第二章 python如何运行程序
一.python解释器介绍
Python解释器是一种让程序运行起来的程序。实际上,解释器是代码与机器的计算机硬件之间的软件逻辑层。
当Python包安装在机器上后,它包含了一些最小化的组件:一个解释器和支持的库。
二.python的视角
当Python运行脚本时,第一步是把代码编译成“字节码”,之后将其转发到所谓的“虚拟机”中。
1.第一步:字节码编译
当程序执行时,Python内部会先将源代码(文件中的语句)编译成所谓字节码的形式。编译是一个简单的翻译步骤,而且字节码是源代码底层的、与平台无关的表现形式。概括地说,Python通过把每一条源语句分解为单一步骤来将这些源语句翻译成一组字节码指令。这些字节码可以提高执行速度。
即,把后缀名为.pyc的文件-->后缀名为.py的文件。
Python这样保存字节码是作为一种启动速度的优化。下一次运行程序时,如果你在上次保存字节码之后没有修改过源代码的话,Python将会加载.pyc文件并跳过编译这个步骤。
2.第二步:python虚拟机(pvm)
一旦程序编译成字节码(或字节码从已经存在的.pyc文件中载入),之后的字节码发送到通常称为Python虚拟机(Python Virtual Machine,简写为PVM)上来执行。从技术上讲,它才是所谓“Python解释器”的最后一步。
3.性能的含义
在Python的工作中通常没有“build”或“make”的步骤:代码在写好之后立即运行。另外一个就是,Python字节码不是机器的二进制代码(例如,Intel芯片的指令)。字节码是特定于Python的一种表现形式。
这就是Python代码无法运行得像C或C++代码一样快的原因。
从更基础的角度来说,牢记我们在Python中真正拥有的只有运行时:完全不需要初始的编译阶段,所有的事情都是在程序运行时发生的。这甚至还包括了建立函数和类的操作以及连接的模块。这些事情对于静态语言往往是发生在执行之前的,而在Python中是与程序的执行同时进行的。就像我们看到的那样,实际的效果就是Python比一些读者所用的程序语言带来了更加动态的编程体验。
4.CPython
原始的、标准的Python实现方式通常称作CPython。图2-2反映了CPython的运行体系结构。
5.Jython
Jython包含了Java类,这些类编译Python源代码、形成Java字节码,并将得到的字节码映射到Java虚拟机(JVM)上。程序员仍然可以像平常一样,在文本文件中编写Python语句;Jython系统的本质是将图2-2中的最右边两个方框中的内容替换为基于Java的等效实现。
6.IroPython
它替换了图2-2中最后的两个方框,将其换成.NET环境的等效执行方式。
python虚拟机直接加载字节码运行程序_第二章 python如何运行程序相关推荐
- Java中动态加载字节码的方法 (持续补充)
文章目录 Java中动态加载字节码的方法 1.利用 URLClassLoader 加载远程class文件 2.利用 ClassLoader#defineClass 直接加载字节码 2.1 类加载 - ...
- [Java安全]—动态加载字节码文件
ClassLoader加载远程字节码 POC import java.io.IOException; import java.net.URL; import java.net.URLClassLoad ...
- 加载字节码的几种方式
前言 要学shiro发现要会cc3,要会cc3发现要先学字节码哈哈哈 正文 利用ClassLoader加载远程字节码 poc import java.io.IOException; import ja ...
- 2的10次方-1的python表达式_第二章PythonⅠ的基本语法,python,I
第二章 python基本语法 I 整数 交换两个变量的值 num1 = 10 num2 = 15 ##常规蛇形变换 tmp = num1 num1 = num2 num2 = tmp ##python ...
- python语言中、用来表示赋值的符号是_第二章Python语言基础知识
第二章Python语言基础知识 2.1 Python语言基础知识 2.1.1标识符与关键字 在Python语言中,对程序中各个元素命名加以区分,这种用来标识变量.函数.类等元素的符号称为标识符. Py ...
- python中变量不需要事先声明_第二章 Python 变量
2.1 Python变量 在 Python 中变量不需要事先声明变量名及其类型,直接赋值即可创建各种变量(不要使用关键字为变量名),例如: >>>x = 4 >>> ...
- python语言程序设计基础第二章答案_python语言程序设计基础(嵩天版),第二章程序练习题...
python语言程序设计基础(嵩天版),第二章程序练习题 欢迎访问江南烧酒的博客 2.2汇率兑换程序.按照1美元=6人民币汇率编写一个美元和人民币的双向兑换程序. """ ...
- java如何手撕加载字节码的代码?编写一个加载class文件的方法
1 自定义ClassLoader类:MemoryClassLoader public class MemoryClassLoader extends URLClassLoader {// class ...
- python制作微信个人二维码怎么做_如何用Python制作微信的好友背景墙?
前段时间,微信朋友圈开始出现了一种晒照片新形式,微信好友墙,即在一张大图片中展示出自己的所有微信好友的头像. 效果如下图,出于隐私考虑,这里作了模糊处理. 是不是很炫,而且这还是独一无二的,毕竟每个人 ...
最新文章
- CountDownLatch 的 .await() 的线程阻塞 和countDown() 计时唤醒
- Struts2教程6:在Action类中获得HttpServletResponse对象的四种方法
- zzuliOJ 2536: 绿绿学姐与AI 1
- Verifying Checksum ... Bad Data CRC ERROR: can#39;t get kernel image!
- Intellij IDEA 使用学习
- Maven工程 报 Diamond types are not supported at language level ‘5‘
- java rmi 使用管道_使用Java RMI时要记住的两件事
- equation在c语言中是什么意思,MathType出现此对象创建于Equation中的问题怎么办
- 【Java数据结构与算法】第七章 冒泡排序、选择排序、插入排序和希尔排序
- Python程序设计语言基础02:Python基本图形绘制
- 2008年6月6日今天终于调回公司本部啦,记录历史的一天。
- VS注释和取消注释快捷键自定义
- 折腾小米盒子1s记录
- 苹果4s怎么越狱_苹果4S怎么下载东西
- JavaScript中三元一次函数的解法
- 互联网大厂薪资最全揭秘:阿里巴巴
- 炸薯片和AI生产新闻一样样的!拢共分六步
- Python调用cmd
- xilinx官网下载vivado速度慢的解决方法(适用于所有版本)
- Excel函数之~计算日期、天数、星期