往往我们实际工作中需要做到以下几点:
Cython为py程序加密&提高性能
1.部署自己的Python应用,但不希望别人能够看到自己的Python源代码
2.项目需求,需要优化已有的Python代码
Cython的原理:把.py文件编译成.c文件,然后把.c文件编译成.so和.pyd文件,这样文件就很难被破解。
优点:在于Python代码很难被破解.
缺点:在于Cython有时可能不支持一小部分代码,完善起来就比较麻烦了.
Python的文件类型介绍:
.py python的源代码文件
.pyc Python源代码import后,编译生成的字节码
.pyo Python源代码编译优化生成的字节码。pyo比pyc并没有优化多少,只是去掉了断言
.pyd Python的动态链接库(Windows平台)
.so (Linux平台)
.so文件是指共享对象(Shared Object)文件,也被称为动态链接库文件.
它是一种编译后的二进制文件,包含了可被程序动态加载的代码和数据.
与静态库相比.so文件在运行时才会链接到程序中,使得程序在运行时更加灵活而且更节省系统资源.
.py, .pyc, .pyo 运行速度几乎无差别,只是so,pyd文件加载的速度更快,不能用文本编辑器查看内容,反编译不太容易.
目前Python代码的执行过程是将Python代码转变成一行行指令,然后解释器解释指令的执行,调用到C代码层。
如果去掉指令解释这个阶段,直接进入C代码层,效率就比较高了。
如果使用Python C API将Python代码改造为C代码并作为Python的内建模块,工作量极其大,也不能保证其正确性,所以这种方法不太现实。
而Cython库正好符合这种场景需求,将已有的Python代码转化为C