J'ai une classe C++ avec des méthodes qui utilisent std :: thread que je rends accessible à Python via Cython. Savez-vous où dans mon code Cython je voudrais mettre la directive nogill? Voudrais-je le mettre quand je déclare les méthodes de classe ou quand je crée une classe de wrapper de Cython? Je l'ai utilisé la classe par exemple des cython docs ci-dessous:Comment libérer le GIL dans Cython pour une classe C++ multithread?
Déclarer la classe:
cdef extern from "Rectangle.h" namespace "shapes":
cdef cppclass Rectangle:
Rectangle() except +
Rectangle(int, int, int, int) except +
int x0, y0, x1, y1
int getArea()
void getSize(int* width, int* height)
void move(int, int)
Cython classe wrapper:
cdef class PyRectangle:
cdef Rectangle c_rect # hold a C++ instance which we're wrapping
def __cinit__(self, int x0, int y0, int x1, int y1):
self.c_rect = Rectangle(x0, y0, x1, y1)
def get_area(self):
return self.c_rect.getArea()
def get_size(self):
cdef int width, height
self.c_rect.getSize(&width, &height)
return width, height
def move(self, dx, dy):
self.c_rect.move(dx, dy)