影想Python编译的过程控制的三个参数详细介绍

开发 后端
如果你想了解Python编译的过程控制的优化额过程中会有三个参数能影响到其的操作过程,以下的文章就是对影响Python编译的过程控制的一些参数的具体介绍。

今天我们将给大家介绍一下Python编译的过程控制是如进行的,以下的文章就是通过Python对相关字节码进行一些优化,以及所需优化的相关代码,下面的文章就是对Python编译的过程控制的相关步骤的介绍。

介绍一下如何“稍微”Python编译的过程控制。只所以说是稍微,是因为无论何种情况,Python都会对字节码进行一些简单优化(basic Peephole Optimization,详情参见Python的源代码。2.5版本的Python位于 Python/compile.c,2.7版本则位于Python/peephole.c)。这些优化不能通过环境变量或者命令参数将其禁用。比如:

 

  1. if True:  
  2. return 1  
  3. else:  
  4. return 0   

 

会被优化成为:

 

  1. return 1 

更多的优化正被添加到Python源代码内。只有三个参数能影响Python编译时的优化:

第一、去除所有的assert语句,并将__debug__这个内置变量的值设置为False。方法是运行Python的时候在命令行添加参数:

 

  1. python -O im.py 

第二、除了第一条所做的事情,还去除所有docstring。方法是运行Python的时候在命令行添加参数:

 

  1. python -OO im.py 

第三、默认的,对于一个模块,Python编译后的字节码会被保存到与源代码相同的文件夹内。这样就可以加速模块的载入速度。大多数使用Python的朋友们都写过包含两三个文件的程序。通常可以发现除了.py文件之外,文件夹内还会有.pyc文件。

mymodule.pyc文件即是mymodule.py的字节码。如果运行Python的命令行包含了”-O”或者”-OO”参数,Python会将优化后的字节码保存到mymodule.pyo文件。想要禁止生成.pyc或者.pyo文件,可以在运行Python的时候,在命令行里添加参数:

 

  1. python -B im.py 

还可以设置环境变量:

 

  1. c:\> set PYTHONDONTWRITEBYTECODE=x 

看完上面三条说明,有的朋友可能会疑问,”-O”和”-OO”参数真的就干那三件事?不幸的是,还真是如此。至少在Python2.5的时候就是这样。所以加”-O”参数并不能明显优化Python的运行速度。这两个选项的真正作用是区分调试版本和发行版本。在程序中可以尽量多增加一些assert语句,以便程序员在调试阶段发现一些隐藏的错误。而在发布时,将这些语句去除。如果你的软件是商业软件的话,加上”-OO”参数可以让别人看不清内部函数的用途,增加一些破解的难度。有了这些,谁还说Python不能写商业软件?以上的文章就是对Python编译的过程控制的实际应用方案的具体介绍。

【编辑推荐】

  1. Python源代码的编译的具体方案应用描述
  2. Python 配置文件的实际应用解析
  3. Python安装配置的具体步骤的相关介绍
  4. python 编程语言在操作文件编码格式的应用
  5. Python 中文乱码问题的分析的具体方案介绍
责任编辑:佚名 来源: 博客园
相关推荐

2011-07-15 16:26:09

架构设计

2012-01-06 11:13:02

SinatraJava框架

2010-03-11 11:07:37

Python函数参数

2009-10-16 09:45:41

Linux内核操作系统

2010-02-04 16:14:56

Ubuntu QQ

2009-10-23 17:40:24

VB.NET绘图方法

2022-03-10 15:54:45

嵌入式开发多核微控制器技术

2023-04-26 11:14:11

IT领导者远程工作

2010-04-19 09:31:44

KDE

2010-04-16 11:39:56

Oracle存储过程

2010-03-15 16:34:50

Python字典

2024-06-13 10:05:36

2023-06-01 07:28:37

自动化业务运维

2009-12-01 18:29:56

PHP缓存控制器

2009-07-17 13:54:51

JDBC存储过程

2017-06-05 13:53:10

2022-06-27 08:47:15

CIOIT领导者职场考证

2021-10-13 06:59:03

Python技巧编程

2009-07-23 14:39:23

ASP.NET处理

2010-04-23 12:24:06

Oracle数据库
点赞
收藏

51CTO技术栈公众号