zoukankan      html  css  js  c++  java
  • Python解释执行原理

    Python解释执行原理

    C或C++之类的编译型语言是将源码编译成机器可以直接执行的二进制文件,当运行二进制可执行程序时,直接将二进制文件从硬盘载入内存中并运行。

    Python执行源代码文件时,会先将源文件编译成字节码bytecode,然后再由Python虚拟机PVM来执行这些字节码。

    字节码

    字节码在Python虚拟机程序里对应的PyCodeObject对象。.pyc是字节码在硬盘上的表现。

    PyCodeObject对象的创建时机是模块加载的时候,即import。

    pyc文件

    1. 当执行python test.py时,会将其编译成字节码后解释执行,但不会生成.pyc文件。如果想生成test.pyc,可以使用内置模块py_compile
    2. 如果test.py加载了其他模块,Python会对其他模块编译成字节码,生成.pyc文件。编译后的字节码.pyc后缀文件保存至模块所在目录中的__pycache__目录中。
    3. 当Python程序第二次执行时,会先在模块的__pycache__目录中查看pyc文件,如果没找到,或者找到了,但是pyc文件的修改时间和源模块的修改时间不同,则会重复第二步。

    关于该设计方式的思考

    1. Python是否保存成pyc文件和我们在设计缓存系统时是一样的,我们可以仔细想想,什么该扔到缓存里,什么不该扔到缓存里。
    2. 在运行一个耗时的Python脚本时,如何能够稍微缩短一些程序的运行时间,就是将模块从主模块分开。
    3. 在设计一个软件系统时,重用和非重用的东西是不是也应该分开来对待,这是软件设计原则的重要部分。
    4. 在设计缓存系统(或者其他系统时),如何来避免程序的过期。
  • 相关阅读:
    http的8种请求方式
    死锁
    进程与线程
    vuex
    路由懒加载
    SPA单页面富应用
    组件中的data为什么必须是函数
    v-for中key的作用
    关于排序的常识总结
    关于树的常见操作-C++面试
  • 原文地址:https://www.cnblogs.com/ChiRou/p/14904741.html
Copyright © 2011-2022 走看看