首页 > 解决方案 > Cython:复制没有 gil 的 memoryview

问题描述

我有以下代码部分(适当简化)

cpdef double func(double[:] x, double[:] y) nogil:
    cdef:
        double[:] _y
    _y = y # Here's my trouble
    _y[2] = 2. - y[1]
    _y[1] = 1.
    return func2(x, _y)

我正在尝试创建可以在函数中操作的 y 副本。问题是,为了_y传递回y. 我不想更改y,只是更改它的临时副本。

该功能是 nogil,所以我不能使用_y = y.copy(). (已经尝试过)。我还尝试了 _y[:] = y,基于 cython 指导页面,但如果_y尚未初始化,我显然无法做到这一点。

那么...如何在不调用 gil 的情况下制作 1d 矢量的副本?

标签: numpycythongil

解决方案


推荐阅读