我想创建一个信号处理算法,需要在numpy数组中保持一些内部状态。
为了速度,我在cython中编码并将状态声明为这样的全局变量:
import numpy as np
cimport numpy as np
cdef np.ndarray delay_buffer
然而,我真正想做的是:
import numpy as np
cimport numpy as np
DTYPE = np.float32
ctypedef np.float32_t DTYPE_t
cdef np.ndarray[DTYPE_t] delay_buffer
我可以做任何其他事情,但不是在全球范围内。有没有办法实现这个目标?
答案 0 :(得分:1)
有没有办法实现这个目标?
没有。正如错误所说,Buffer types only allowed as function local variables
。
一种替代方法是使用单片main
函数。这真的只需缩进所有内容,但这意味着你只能分享这么多。
我最喜欢的选择是升级到使用内存视图的现代方法:
cdef DTYPE_t[:] delay_buffer
应该更快,更清洁,更强大。