Cython抱怨生成的pxd定义的C代码需要gil

时间:2018-07-05 07:21:32

标签: cython gil

我有一些可以进行简单并行化的代码。但是,它使用C库。如何将pxd文件中的函数定义为nogil?它们是纯C语言,所以我看不到问题...

这是我收到的错误消息:

Error compiling Cython file:
------------------------------------------------------------
...
                    it = NULL
                    output[nfound] = indexes[i]
                    nfound += 1

            i += 1
            cn.free_interval_iterator(it_alloc)
                                    ^
------------------------------------------------------------

ncls/src/ncls.pyx:545:37: Calling gil-requiring function not allowed without gil 

这是我的pxd文件中定义的示例:

int free_interval_iterator(IntervalIterator *it)
IntervalIterator *reset_interval_iterator(IntervalIterator *it)
int find_intervals(IntervalIterator *it0,
                   int start,
                   int end,
                   IntervalMap im[],
                   int n,
                   SublistHeader subheader[],
                   int nlists,
                   IntervalMap buf[],
                   int nbuf,
                   int *p_nreturn,
                   IntervalIterator **it_return)

1 个答案:

答案 0 :(得分:0)

正确的方法是在函数定义之后。

IntervalIterator *interval_iterator_alloc() nogil