Python代码打包成二进制可执行程序 https://www.jianshu.com/p/985c37ff7b2d
【教程】将Python转为C语言并编译生成二进制文件 https://cloud.tencent.cn/developer/article/2375091
python文件编译成二进制文件 python编译成二进制执行 https://blog.51cto.com/u_14405/7561397
把python脚本编译成二进制可执行文件 https://blog.csdn.net/yiduoyun_/article/details/135507998
参考:
build - Is there a way to compile a python application into static binary? - Stack Overflow
Python和Cython有什么关系?python开发 https://blog.csdn.net/m0_59236602/article/details/127616456
为什么我使用Cython速度提高不多? https://www.zhihu.com/topic/19875055/hot
[Python] Cython知识总结 https://zhuanlan.zhihu.com/p/586935390
Cython 是什么?为什么会有 Cython? https://blog.csdn.net/chinesehuazhou2/article/details/125252492
----------------------------------------------------------------------
为什么我使用Cython速度提高不多?
https://www.zhihu.com/topic/19875055/hot
如果你在cython里面只用c的原生类型,cdef所有函数和变量,不使用cdef list, cdef dict。使用malloc/free,不用 PyObject 引用计数。
那么我可以负责地说这样写的cython代码和纯c基本上是完全等价的。c有多快,cython就有多快。在这个假设下面cython和c的关系就完全是coffeescript 和 js的关系。
如果用了一些python特有的feature,比如cdef list, cdef dict,def __init__, def __dealloc__之类的,那么代码的效率就会接近python。有测试说cdef list和纯C的动态数组效率差30多倍。
所以cython既可以写出等价于C的代码,也可以写出等价于python的代码。cython最吸引人的地方是:一开始你可以写纯python的代码,然后慢慢通过 profiling 把性能瓶颈替换成 c原生类型和函数,直到满足你的需求。这个过程是渐进平滑的,而不是从头开始重写
编辑于 2024-03-28 02:08
====================================
摘录:Python代码打包成二进制可执行程序
https://www.jianshu.com/p/985c37ff7b2d
方案一:pyinstaller
这个方案简单易用,不仅可以打包可执行文件,还可以把所有依赖全部打包到一起,都不用考虑在执行的机器上安装Python环境。
但这种方式有个问题,Pyinstaller打包的可执行程序,运行时会启动两个进程。这种场景下,主进程Pyintaller加的,我的Python代码作为子进程启动,主进程的进程状态我没法在Python代码里控制,不能满足我的使用场景,所以只能第二种方案。
方案二:Cython
Cython的方式麻烦一点,但是满足我的需求。整体思路即:把Python代码转成C代码再编译成可执行程序。而Cython编译器就是一个很方便的转换工具。对比Pyinstaller打包的,Cython打包完之后,可能还需要自己把对应依赖的动态库也得带上,毕竟少了Pyintaller里面那么多import-hook工具帮你收集依赖。当然如果在执行的机器上装好Python环境就没必要打包依赖的动态库了。各有优劣,任君选择。
摘录:什么是Cython?让Python有C语言的速度
https://baijiahao.baidu.com/s?id=1593543676299733105&wfr=spider&for=pc
Python的一个超集,可以编译为C,Cython结合了Python的易用性、和原生代码的速度。
Python作为最方便,丰富的配置和彻底有用的编程语言之一而享有盛誉。 但执行速度?没那么快。
让我们开始了解Cython,Cython语言是Python的一个超集,编译成C语言,产生的性能提升可以从几个百分点到几个数量级,具体取决于手头的任务。 对于受Python原生对象类型约束的工作,加速将不会很大。 但是对于数值操作,或任何不涉及Python自身内部的操作,收益可能是巨大的。 这样,许多Python的本地限制可以被绕过或完全超越。
使用Cython,你可以避开Python的许多原生限制,或者完全超越Python,而无需放弃Python的简便性和便捷性。 在本文中,我们将介绍Cython背后的基本概念,并创建一个使用Cython加速功能的简单Python应用程序。