基础知识 -- Python方面

2019-04-18  本文已影响0人  爱修仙的道友

PYTHON 运行机制介绍

  1. 编译器
    • Cython 针对数值计算
      将python写的代码.py文件,通过Cpython编译器编译变为C语言代码,加速执行。。
      Cython 使得 Python 语言的 C 扩展与 Python 本身一样简单。Cython 是基于 Pyrx 的源代码转换器,但支持更多的边缘功能和优化。Cython 语言是 Python 语言的一个超集(几乎所有的 Python 代码是有效的)还支持可选的静态类型来调用 C 函数,声明 C 类型变量和类的属性。这允许编译器从 Cython 代码生成非常高效的 C 代码。这使得 Cython 编写外部 C/C++库代码的理想语言,和快速的 C 模块,提高Python 代码的执行速度。广泛应用于数值计算包的编译,如 numpy 等,编译器可以通过 pip 实现:
      pip   install cython
      
image.png

该编译器会引入 GIL(全局解释锁)问题,CPU 密集型程序建议使用 python 调用动态链接库的方式提升运行效率

  1. 字节码和虚拟机
    pyc 文件是 py 文件编译后生成的字节码文件(byte code),pyc 文件经过 python 解释器最终会生成机器码运行。所以 pyc 文件是可以跨平台部署的,类似 Java 的.class 文件。Pyc 文件可以打包分发从而避免源代码被暴露出来。python 先把代码(.py 文件)编译成字节码,交给字节码虚拟机,然后虚拟机会从编译得到的 PyCodeObject 对象中一条一条执行字节码指令,并在当前的上下文环境中执行这条字节码指令,从而完成程序的执行。
    字节码对象的创建时机是模块加载的时候,即 import 时,执行过程如下:
    1、执行 python main.py 会对 main.py 进行编译成字节码并解释执行,但不会生成
    test.pyc
    2、如果 main.py 中加载了其他模块,如 from mytest import myfun,那么 python会对 myfun.py 进行编译成字节码,生成 myfun.pyc,然后对字节码解释执行。
    3、如果想生成 main.pyc,我们可以使用 python 内置模块 py_compile 来编译。也可以执行命令 python -m main.py 这样,就生成了 main.pyc
    4、加载模块时,如果同时存在.py 和.pyc,python 会使用.pyc 运行

  2. 程序打包

高阶编程

请大家移步到相关教学网站去深入学习

其他知识点

  1. 虚拟环境--沙箱机制
image.png
  1. pip
  1. init.py
上一篇 下一篇

猜你喜欢

热点阅读