【永利澳门游戏网址304】Python基础手册3

Kodi
“Leia”18.5 于近日正式发布,与此同时,该团队对其下一个重要发行版-Kodi
19’Matrix’也进行了重大更改。

一、Python解释器

我们编写的Python代码都要放在Python解释器上运行,解释器是代码与计算机硬件之间的软件逻辑层。
当我们在操作系统上安装好Python之后,它就包含了保证Python运行的最小化组件:解释器

标准库。根据选用的Python版本的不同,解释器本身可以用C语言实现(Python的官方实现版本)、Java语言实现或者其他的形式。无论使用采用什么版本,编写好的Python程序代码必须放在解释器中运行。

据悉,Python
2将于2020年1月1日寿终正寝,为此,Kodi基金会已迈出了为所有基于Python的附加组件切换到Python
3解释器的步骤。目前,每晚为Kodi 19“ Matrix”构建的版本都在使用Python
3解释器运行所有基于Python的加载项。

1、Python代码的执行过程

将我们编写好的Python代码放到解释器中运行,此过程主要分为两步,第一步是将源码编译成“字节码”,第二步是将编译好的字节码转发到Python“虚拟机”中运行。当然对于程序员来说,这两步都是隐藏的。

尽管此更改现在存在于Kodi 19的夜间构建中,但这确实意味着“矩阵”中的故障。

(1)字节码编译

当我们运行Python代码时,Python解释器内部会先通过词法分析器将文件中的每一条代码语句分解为单一步骤,然后编译成字节码的形式。编译只是一个简单的翻译步骤,而且字节码是属于源代码层次范围内的底层代码,是与平台无关的,所以编译好的字节码是可以跨平台运行的。这些字节码可以提高执行速度,比起原始的源代码语句,字节码的运行速度要快很多。
如果Python进程在机器上拥有写入权限,那么它将把编译好的字节码保存为一个以
.pyc
为扩展名的文件。Python这样做是作为一种启动速度的优化,下一次运行程序的时候,如果你在上次保存字节码之后没有修改过源代码,Python将会直接加载
.pyc文件,并跳过编译这个步骤。如果你修改了源代码,下次运行程序时,字节码文件将自动重新创建。

Kodi团队解释称,“对于我们来说,这种迁移是一个巨大的变化,需要做很多工作才能使功能再次恢复正常。这也需要迅速完成,因为我们需要在Python
2生命终止之前完成。”

(2)Python虚拟机(PVM)

当源文件编译成字节码,字节码就会发送到Python虚拟机(PVM)上来执行。事实上,PVM就是迭代运行字节码指令的一个大循环,一个接一个的完成操作。从技术上讲,这是Python解释器的最后一步。

而最大的问题是转换意味着大量插件将不再起作用,但这还不是全部。该团队表示,“还有一些问题需要核心开发人员知识来解决。自从使用Python
3以来,尤其是在所有Windows平台上都存在一些困难。用于UWP(Xbox)的Kodi版本根本无法编译,需要有人来支持。某些库(例如Pillow,PyCryptodome,cTypes等)也存在问题,缺少或不兼容的版本,因此依赖于它们的那些附加组件将无法运行,从而导致无法在Windows上进行测试。”

相关的性能问题

和C/C++这类完全编译语言相比,Python的工作中没有 “build” 和 “make”
操作,也就是没有将源码编译成可以直接在机器上运行的二进制代码的过程。而且Python解释器中间形成的字节码并不是CPU可以直接运行的二进制代码,PVM仍然需要解释字节码成为二进制码,再交由CPU运行。所以Python代码无法运行的像C/C++一样快。

此外,Kodi 团队也警告称,“在我们解决这些问题之前,事情会变得有些生疏,所以请耐心等待。”

相关的开发意义

在程序开始执行之前不需要预编译和连接,只需要简单的输入并运行代码即可,这使得开发周期大大缩短。这同样使得Python具有更多的动态语言特性:在运行时,Python程序可以去构建并执行另一个Python程序,而且往往非常的方便。

发表评论

电子邮件地址不会被公开。 必填项已用*标注