我需要通过cython加速python代码。为了获得额外的加速,我想在python变量上自动声明C类型。
要做到这一点,我想找到像a = 1.0
这样的赋值,尝试创建整数或浮点python对象,然后将代码更改为cdef double a = 1.0
。 (我们知道“a”仅用作float。因此python代码有一些限制。)
使用python ast模块查找分配的第一项任务是一项简单的任务。但我不知道如何插入类型定义。我可以修改抽象语法树(ast),但我认为cython编译器无法读取已更改的ast。
这是我的问题:我是否需要一个代码生成器,允许从已更改的ast转换为cython代码,或者是否有更自然的方式来完成我的任务(可能是在cython工具的帮助下)?