如何避免在pyx文件(Cython)中使用函数?

时间:2018-07-21 22:55:12

标签: python cython cythonize

我正在使用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文件的python文件(例如pyx)的结构:

#Implement the cython job
import cosmos_cy

pyxfname.somefunction()

完成Cythonize的过程后,我只需要执行python pyfile.py即可运行文件。一切运行正常。

在上面的示例中,当我不使用somefunction()时,出现一个错误,提示Buffer types only allowed as function local variables,类似于this帖子中的描述。

此外,我在多个地方(herehere)看到Cython不喜欢在函数内部包含函数。因此,当我想在pyx文件中定义更多函数时,我的双手会束缚。

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

0 个答案:

没有答案