Cython 初始化内存视图的最快方法

问题描述

我正在用 Python 开发实时数据处理程序,而在数据处理部分我使用的是 cython。

不幸的是,使用 np.zeros 初始化一个 numpy 数组相当慢。我发现在启动时创建一次数组,然后循环遍历这些值并将它们设置为零比创建一个新数组要快。

@cython.wraparound(False)
@cython.boundscheck(False)            
cpdef zeros_int32(unsigned long long[::1] arr):
    cdef unsigned int x
    with nogil:
        for x in range(arr.shape[0]):
            arr[x] = 0

但是我觉得这很hacky。有没有更好的方法来初始化所有值都设置为 0 的数组?也许使用 malloc 和 free?我知道在 C++ 中,您可以执行以下操作:

uint_32t emptyArray[number_of_elements];

它创建了所有值都设置为 0 的数组,但我似乎无法让它在 cython 中工作。再一次,我只关心代码的速度,所以它是否看起来很乱并不重要只要尽可能快地执行,就非常具有可读性。

任何帮助将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)