zoukankan      html  css  js  c++  java
  • python的pyc和pyo文件

    python并非完全是解释性语言,它是有编译的,先把源码py文件编译成pyc或者pyo,然后由python的虚拟机执行,相对于py文件来说,编译成pyc和pyo本质上和py没有太大区别,只是对于这个模块的加载速度提高了,并没有提高代码的执行速度,通常情况下不用主动去编译pyc文件,文档上说只要调用了import model那么model.py就会先编译成pyc然后加载

    1.如果需要特殊的单独编译,则只需要使用py_complie这个模块就行了,如下

    import py_compile
    py_compile.compile(r'H:game est.py')
     
    compile函数原型:
    compile(file[, cfile[, dfile[, doraise]]])
    file 表示需要编译的py文件的路径
    cfile 表示编译后的pyc文件名称和路径,默认为直接在file文件名后加c 或者 o,o表示优化的字节码
    dfile 错误消息保存的路径
    doraise 可以是两个值,True或者False,如果为True,则会引发一个PyCompileError,否则如果编译文件出错,则会有一个错误,默认显示sys.stderr中,而不会引发异常
     
    2.如果要把一个文件夹下的所有py文件都进行编译,则用下面的命令
    import compileall
    compileall.compile_dir(dirpath)
    dirpath是我们要编译的文件夹的绝对路径
     
    3.如果要编译pyo文件则
    编译成 pyo 就是在控制台执行 python -O -m py_compile file.py
    其中file.py就是我们要编译的源文件
     
    个人感觉这个原理知道就行了,其实没多大用处,仅仅提高了加载速度而已,另外还有一点好处就是可以减少文件的大小,可能对于嵌入式系统中把需要的模块都编译成pyo文件可减少容量,毕竟嵌入式系统多数都是容量有限,现在的pc硬件越来越强,仅仅提高加载速度没多大作用,不过这也是python的机理,它就是这么干活的,知道就好,呵呵
  • 相关阅读:
    在IE地址栏输入JS的有趣效果
    min-height for IE6
    针对主流浏览器的CSS-HACK写法及IE常用条件注释
    spring mvc从前台往后台传递参数的三种方式
    SQL语句优化
    SpringCloud分布式开发理解
    Spring的三大核心思想
    单例模式中的懒汉模式及饿汉模式
    SpringMVC工作原理
    堆和栈的区别及堆区和栈区的区别
  • 原文地址:https://www.cnblogs.com/code-style/p/3312233.html
Copyright © 2011-2022 走看看