【问题标题】:automatic declaring c types on python variables for cython在 cython 的 python 变量上自动声明 c 类型
【发布时间】:2013-11-15 08:07:37
【问题描述】:

我需要通过 cython 加速 python 代码。为了进一步加快速度,我想在 python 变量上自动声明 C 类型。

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

查找作业的第一项任务是使用 python ast 模块轻松完成任务。但我不知道如何插入类型定义。我可以修改抽象语法树(ast),但我假设 cython 编译器无法读取更改后的 ast。

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

【问题讨论】:

  • Stefan Behnel 来自Google Groups:“Cython 提供了一定程度的类型推断,这意味着“a = 1.0”形式的赋值将自动被推断为 C double ... 整数是不同的野兽,因为 Cython 无法安全地限制它们的整数范围。您必须自己声明它们,或者在代码中使用“infer_types=True”指令,这将启用不安全的类型推断。”

标签: python code-generation cython abstract-syntax-tree


【解决方案1】:

我认为Augmenting.pxd 是要走的路。

【讨论】:

    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 2011-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-22
      • 1970-01-01
      • 1970-01-01
      • 2010-12-22
      • 2012-09-08
      相关资源
      最近更新 更多