【Python学习笔记】 第2章 Python如何运行程序

打印 上一主题 下一主题

主题 847|帖子 847|积分 2541

Python解释器简介

我们在Python的官网下载并安装Python后,它会天生一些组件,包罗解释器和一套支持库。Python的代码必须在解释器中运行。

程序运行

程序员的视角

一个Python程序仅是一个包罗Python语句的文本文件。例:创建script0.py文件,并写上:
  1. print("Hello, world!")
  2. print(2 ** 100)
复制代码
然后,我们在命令行窗口,调用Python执行文件:

Python的视角

在解释器解释文件的内容时,还会做一些别的事变。
字节码编译

如果Python在机器上拥有写入权限,那么它把程序的字节码保存为一个以.pyc为扩展名的文件,这个就是字节码文件。在版本3.2之前,文件与源文件同目录;在版本3.2之后,文件在__pycache__目录中。在这个目录中还保存了编译它们的Python版本信息。
Python这么做的目的是对启动速率优化。下次运行程序时,Python先检查:

  • 源文件是否改变:检查源文件和字节码文件最后一次修改的时间戳。
  • Python的版本:是否版本不同。
然后确定是否要重新编译并天生字节码文件。大型程序中,字节码文件有助于加速启动。
Python虚拟机

Python将程序编译成字节码后,就可以发送到Python虚拟机上执行。Python虚拟机是解释器的一部分,也是解释器的最后一环。
性能的含义

Python的源代码在写好后可以立刻运行。字节码只是特定于Python的一种表现情势。Python仍然须要解释字节码,这使得Python的运行速率不如C/C++。
开发的含义

Python的编译后立刻执行的特性使得开发周期大大缩短。
执行模型的变体

Python的各种实现

CPython:标准Python

最初的、标准的Python
Jython:基于Java的Python

设计目的是与Java编程语言集成。作用是将Python源代码编译成Java字节码,使其可以运行在Java虚拟机上。
IronPython:基于.NET的Python

可以与Windows平台上的.NET框架以及与之对应的Linux开源的Mono编写成的应用相集成。
Stackless:注重并发的Python

它不会在栈上保存状态,使得Python更容易移植到较小的栈架构中。
PyPy:注重速率的Python

执行优化工具

Cython:Python和C的混合

Shed Skin:Python到C++的转换器

Psyco:原先的即时编译器

冻结二进制文件

有时间我们希望可以或许拥有一个把Python程序编译成二进制文件的简单方法。
实现上述想法的工具有:py2exe(Windows)、PyInstaller(Linux、Mac OS X)等等。
未来的可能性

未来也许有新的字节码格式和实现方式的变体将被接纳。比如:

  • Parrot:提供多种语言通用的字节码格式、虚拟机以及优化技术。
  • Unladen Swallow:将Python提速至少5倍。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

悠扬随风

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表