cython的另类用途

都知道py虽然方便但是却有个不是问题的问题:就是发布时的二进制格式的限制。

 

常用的打包有cx_freeze, py2exe等。此类工具大多将py变为pyc然后放置在.zip文档中。对于某些加密的需求可能不大合适..

 

于是这时候cy就可以派上用场了。

 

cy的其中一个功能就是把寻常的py代码变为c wrapper py c api的形式的调用。最后变为.pyd (一个标准的.dll or .so)

 

理论上可以把所有的py代码都可以封装为.pyd的形式,这样对于某些需要使用

加密狗之类的需求,或许会是个解决方案。

 

最近pypy进展飞快,我看再有个3年,直接用py来写高性能的计算不是不可能的事情。在此之前,我还是只能用cy。

 

update:

 

初步试验过,可以结合cython, cx_freeze把py code变成一堆.pyd文件以及.exe文件,我成功把一个查询的应用变为一个独立的应用。这个有助于打消一些人的疑虑“py 只能部署源码,不能放可执行档等等”

 

虽然这个方法也就是好看而已。

### Cython简介 Cython 是一种编程语言,它旨在成为 Python 的超集,允许开发者编写既具有 Python 易用性又具备接近 C 速度的代码。其核心功能是将 Python 代码转换为优化的 C 扩展模块[^4]。 以下是关于 Cython 的一些重要信息: --- ### Cython的主要特性 1. **兼容Python语法**: Cython 支持几乎所有的 Python 语法,这意味着现有的 Python 脚本可以轻松迁移到 Cython 中并获得性能提升。 2. **静态类型声明支持**: 用户可以通过在变量前添加 `cdef` 关键字来定义静态类型的变量,从而进一步提高程序运行效率。 3. **集成C/C++库的能力**: Cython 提供了一种简单的方法来调用外部 C 或 C++ 库中的函数数据结构,这使得它可以作为连接高性能计算资源的一个桥梁。 4. **编译成扩展模块**: Cython 将源文件编译为高效的 C 扩展模块,这些模块可以直接由标准解释器加载执行。 --- ### Cython的优势 1. **显著的速度改进**: 对于数值密集型操作或者循环较多的部分,使用 Cython 后通常可以获得数倍甚至数十倍以上的加速效果。 2. **易于维护**: 因为其保留了大部分原始 Python 结构,所以即使经过优化后的代码也相对容易理解修改。 3. **跨平台支持良好**: 利用了成熟的构建工具链(如 setuptools distutils),因此可以在不同操作系统上无缝部署生成的应用程序。 4. **社区活跃度高**: 得益于庞大的用户群体以及持续更新的技术文档支持论坛,遇到任何技术难题都能迅速找到解决方案。 --- ### 示例代码展示如何利用Cython实现更快的功能 下面是一个简单的 Fibonacci 数列生成的例子,展示了怎样借助 Cython 来达到更高的运算效能: ```cython # fibonacci.pyx def fib(int n): cdef int a = 0 cdef int b = 1 while n > 0: a, b = b, a+b n -= 1 return a ``` 为了使上述 `.pyx` 文件生效,还需要创建一个配置脚本来指定编译选项: ```python from setuptools import setup from Cython.Build import cythonize setup( name='Fibonacci Example', ext_modules=cythonize("fibonacci.pyx"), ) ``` 之后只需运行命令 `python setup.py build_ext --inplace` 即可完成整个过程,并得到对应的共享对象(.so)或动态链接库(.dll),最终可供导入到常规 python 程序里调用。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值