首页 > 解决方案 > 如何避免在 pyx 文件(Cython)中使用函数?

问题描述

我正在使用 Cython。我想知道是否有必要def somefunction()在我的.pyx文件中使用函数 ( )。

这是我定义.pyx文件的当前方式(例如pyxfname.pyx):

from __future__ import division
import numpy as np
cimport numpy as np

def somefunction():
    cdef int i, j
    cdef np.ndarray[double, mode="c", ndim=2] Kappa = np.zeros( [10 , 10], dtype=np.float64)

    for i in range(0,10):
        for j in range(0,10):
            Kappa[i,j] += 1     

    print "Hello world"

这就是pyfile.py调用该pyx文件的 python 文件(比如 )的结构:

#Implement the cython job
import cosmos_cy

pyxfname.somefunction()

当我完成 cythonizing 的过程时,我只需要python pyfile.py运行文件。事情确实运行正常。

在上面的例子中,当我不使用时somefunction(),我得到一个错误,上面写着Buffer types only allowed as function local variables类似于这篇文章中描述的内容。

此外,我在多个地方(这里这里)看到 Cython 不喜欢在函数中包含函数。所以,当我想在pyx文件中定义更多函数时,我的手被束缚了。

因此,我想避免定义 python 函数 somefunction()。我需要在我的pyxpy文件(或两者)中进行哪些更改以实现所需的功能而无需使用 python 函数?任何帮助都感激不尽。

标签: pythoncythoncythonize

解决方案


推荐阅读