自动声明C类型以用于Cython的Python变量

4

我需要通过Cython加速Python代码。为了进一步提高速度,我想要自动声明Python变量的C类型。

为此,我想要找到这样的赋值语句:a = 1.0,试图创建整数或浮点数Python对象,然后将代码更改为cdef double a = 1.0。(我们知道“a”只用作float。因此,Python代码有一些限制。)

找到赋值语句的第一个任务是使用Python ast模块轻松完成的。但是我不知道如何插入类型定义。我可以修改抽象语法树(ast),但我认为Cython编译器无法读取更改后的ast。

我的问题是:我需要一个代码生成器,允许从更改后的ast转换为Cython代码,还是有更自然的方法来完成我的任务(也许借助Cython工具的帮助)?


1
Stefan Behnel在Google Groups中说:“Cython提供了一定程度的类型推断,这意味着形如“a = 1.0”的赋值将自动被推断为C double...整数是不同的,因为Cython不能安全地限制它们的整数范围。你要么自己声明它们,要么在你的代码中使用“infer_types=True”指令,这将启用不安全的类型推断。” - user2303141
2个回答

1


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接