Python是一门解释语言,Python为我们提供了基于硬件和操作系统的一个虚拟机,并使用解释器将源代码转化为虚拟机可执行的字节码。字节码在虚拟机上执行,得到结果。

Python解释器工作原理

我们使用python example.py来执行一份源代码时,Python解释器会在后台启动一个字节码编译器(Bytecode Compiler),将源代码转换为字节码。字节码是一种只能运行在虚拟机上的文件,Python的字节码默认后缀为.pyc,Python生成.pyc后一般放在内存中继续使用,并不是每次都将.pyc文件保存到磁盘上。有时候我们会看到自己Python代码文件夹里有很多.pyc文件与.py文件同名,但也有很多时候看不到.pyc文件。pyc字节码通过Python虚拟机与硬件交互。虚拟机的出现导致程序和硬件之间增加了中间层,运行效率大打折扣。相信使用过虚拟机软件的朋友深有体会,在原生的系统上安装一个虚拟机软件,在虚拟机上再运行一个其他系统,经常感觉速度下降,体验变差,这与Python虚拟机导致程序运行慢是一个原理。

Just-In-Time(JIT)技术为解释语言提供了一种优化,它能克服上述效率问题,极大提升代码执行速度,同时保留Python语言的易用性。使用JIT技术时,JIT编译器将Python源代码编译成机器直接可以执行的机器语言,并可以直接在CPU等硬件上运行。这样就跳过了原来的虚拟机,执行速度几乎与用C语言编程速度并无二致。

Python解释器工作原理与jit技术相关推荐

  1. python解释器工作原理_Python解释器执行原理

    Python在执行时,首先会将.py文件中的源代码编译成Python的byte code(字节码), 然后再由Python Virtual Machine(Python虚拟机)来执行这些编译好的byt ...

  2. python系统工作原理_Python之路——堡垒机原理及其简单实现

    1 堡垒机基本概述 其从功能上讲,它综合了核心系统运维和安全审计管控两大主干功能,从技术实现上讲,通过切断终端计算机对网络和服务器资源的直接访问,而采用协议代理的方式,接管了终端计算机对网络和服务器的 ...

  3. 尿液分析仪工作原理及主要技术参数

    尿液分析仪工作原理:尿液分析仪一般用微电脑控制,采用球面积分仪接受双波长反射光的方式测定试带上的颜色变化进行半定量测定.试剂带上有数个含各种试剂的试剂垫,各自与尿中相应成分进行独立反应,而显示不同颜色 ...

  4. 螺旋天线有方向性吗_新型谐振式螺旋天线的工作原理、关键技术及实验结果

    一. 引 言 众所周知,天线一直是卫星移动通信和全球定位系统(GPS)的一个技术难点,因为它除了必须满足宽频带.宽波束和圆极化等一系列苛刻的电气性能指标之外,还要做到体积小.重量轻,谐振式四臂螺旋天线 ...

  5. 光刻机的工作原理及关键技术

    来源:传感器技术 光刻机的工作原理: 利用光刻机发出的光通过具有图形的光罩对涂有光刻胶的薄片曝光,光刻胶见光后会发生性质变化,从而使光罩上得图形复印到薄片上,从而使薄片具有电子线路图的作用.这就是光刻 ...

  6. 服务器阵列工作原理,服务器RAID技术基础了解一下

    RAID技术伴随着使用者对高端的存储功能和冗余的数据安全越来越高,使用者越来越多的需要接触到这些知识,使用功能既可以由硬件来实现,也可以由软件来实现,又该怎么配置?本文档详细的介绍了服务器做RAID的 ...

  7. 双时隙的工作原理_OFDM调制技术原理是什么 OFDM调制实现原理介绍【图文】

    无线通讯OFDM调制技术原理简介 OFDM是现代宽带无线通信系统应用的技术.为了减少高数据率OFDM系统中各信道间影响带来的失真,引入循环前缀(CP)来消除码间干扰(ISI).它将一个IFFT包的最后 ...

  8. lorawan的工作原理_LoRaWAN中继器技术原理

    标准LoRaWAN网络为星型架构,终端直接和网关进行数据交互,无多跳,最大程度简化网络结构,减小数据传输带来的功耗开销. 但是在部分较为复杂的网络部署环境下,确实会遇到网关无法可靠覆盖个别节点的情况, ...

  9. python解释器的工作原理_python解释器详解

    Python是一门编程语言,但是从目前的实现来讲,Python也是一个名为解释器的软件包,解释器是一种让其他程序运行起来的程序,当你编写了一段Python程序,Python解释器将读取程序,并且按照其 ...

最新文章

  1. TC专访Waymo首席技术官:谷歌自动驾驶的过去和未来
  2. 对话系统(二)-普通神经网络
  3. thinkphp index.php隐藏,thinkphp5怎么隐藏index.php入口文件?
  4. css 精灵图 0302
  5. java char 8192_java.net.ProtocolException:预期229个字节,但收到8192
  6. 单片机ADC采样算法----一阶低通滤波
  7. 蛋制品加工行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  8. mysql基本命令总结
  9. System Verilog——任务和函数 Part-I
  10. python2和3搭建,pip2和pip3的安装
  11. oracle开发的小技巧(原创)
  12. 计算机共享文件夹不要用户名密码怎么设置,Win7电脑怎么设置不用密码也能访问共享文件?...
  13. 业界红包玩法与技术方案总结
  14. php的strtoupper,关于PHP的strtoupper函数
  15. 【蓝桥系列】——十三届蓝桥杯PythonB组第五题E题蜂巢(AC代码)
  16. 机器学习 --- 逻辑回归
  17. 关于ES自定义script painless的问题
  18. 大数据技术之Hadoop3.x
  19. Android图片打水印
  20. 《Android开发艺术探索》笔记目录

热门文章

  1. android dp工具类,Android 单位px、dp、sp转换工具类
  2. 复位 stm32_分析一个关于STM32 芯片异常复位的经典案例!
  3. 关于四金计算和工资对照表
  4. Using libcurl in VC++
  5. 洛谷P1396 营救 题解
  6. vue-router 按需加载
  7. .net core 一个避免跨站请求的中间件
  8. JavaScript中闭包实现的私有属性的getter()和setter()方法
  9. 设计模式(七)适配器模式(Adapter Pattern)
  10. c#写数据到Excel慢