Cython жалуется, что сгенерированный pxd-определенный C-код требует gil - PullRequest
0 голосов
/ 05 июля 2018

У меня есть некоторый код, который готов для простого распараллеливания. Тем не менее, он использует библиотеку 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 голосов
/ 05 июля 2018

Правильный способ сделать это - после определения функции.

IntervalIterator *interval_iterator_alloc() nogil
...