Python 如何避免在pyx文件(Cython)中使用函数?
在我使用Cython。我想知道是否有必要在我的Python 如何避免在pyx文件(Cython)中使用函数?,python,cython,cythonize,Python,Cython,Cythonize,在我使用Cython。我想知道是否有必要在我的.pyx文件中使用函数(def somefunction()) 这就是我现在定义.pyx文件的方式(比如pyxfname.pyx): 这就是调用pyx文件的python文件(比如pyfile.py)的结构: #Implement the cython job import cosmos_cy pyxfname.somefunction() 当我完成cythonizing过程时,我只需要执行python pyfile.py来运行该文件。事情确实正常
.pyx
文件中使用函数(def somefunction()
)
这就是我现在定义.pyx
文件的方式(比如pyxfname.pyx
):
这就是调用pyx
文件的python文件(比如pyfile.py
)的结构:
#Implement the cython job
import cosmos_cy
pyxfname.somefunction()
当我完成cythonizing过程时,我只需要执行python pyfile.py
来运行该文件。事情确实正常运行
在上面的例子中,当我不使用somefunction()
时,我得到了一个错误,它说缓冲区类型只允许作为函数局部变量使用
,这与post中描述的类似
此外,我在多个地方(和)看到Cython不喜欢在函数中包含函数。因此,当我想在pyx
文件中定义更多函数时,我的手就被束缚住了
因此,我希望避免定义python函数
somefunction()
。我需要在我的pyx
或py
文件(或两者)中做哪些更改才能实现所需的功能,而不必使用python functon?任何帮助都将不胜感激。您引用的两种情况都是在其他函数中定义的函数。我希望Cython在普通模块级函数方面没有问题,比如你的somefunction
。我不理解这个问题。如果somefunction()
实际上只是在打印“Hello world”
,那么您首先不需要Cython来完成这项工作。我想你实际上有一些其他的代码要放进somefunction()
,但是当我们看不到这些代码时,我们很难给你提供建议。凯文:我的实际情况并没有什么不同(不仅仅是你好世界
)。它有一系列嵌套的for循环、数学计算。我不想问题太长。我正在编辑我的帖子,以便更好地了解我正在做的一些事情。我不确定你想要实现什么,在我看来,你似乎试图在不同的功能之间共享数据。通常,我们会将处理这些数据的数据+函数封装在一个类中。如果这是您想要的,那么cython中有cdef类。正如所写的,这段代码编译正确。Cython不允许在嵌套函数或类中使用np.ndarray[…]
类型。但是,这两种情况都不会显示在代码中。但是,在这些情况下,键入的MemoryView可以很好地工作。
#Implement the cython job
import cosmos_cy
pyxfname.somefunction()