python运行程序的过程:
一、字节码编译
程序执行时,python内部先将py文件中的语句【源代码】编译成字节码。
字节码是什么:每一条python语句翻译成一组字节码指令
字节码的好处:比起源代码,字节码的运行速度快得多
字节码的存在形式【.pyc文件】:如果python进程在机器上【电脑】拥有写入权限,当程序运行后,在py文件的同级目录下可以看到一个.pyc文件,这里面即是py文件的字节码
保存pyc文件的好处:可以优化启动速度。如果py文件没有修改过,那么下次运行同一文件的时候,python会跳过编译步骤,直接加载.pyc文件。
python第二次运行同一程序时会自动检查源文件和字节码的时间戳。如果又保存了源文件,python检查到时间戳不一致,这时运行程序,会自动重新创建字节码【重新进行了编译过程】
没有.pyc文件:如果python无法在机器上写入字节码,字节码将会在内存中生成,并在程序结束时丢弃。
在大型程序中,最好保证python进程拥有机器的写入权限。因为字节码文件也是分发python程序的方式之一:如果python找到的都是pyc文件,同样可以运行程序,即使这个目录下面没有py源文件
二、python虚拟机【PVM】
程序编译成字节码或者字节码从已存在的.pyc文件中载入,之后,字节码发送到python虚拟机上执行。
PVM是迭代运行字节码指令的大循环,一个接一个完成操作【手动问号,不是很理解】
PVM时常表现为python系统的一部分,是实际运行脚本的组件。从技术上讲,它是所谓“python解释器”的最后一步
待续