Skip to content

Commit 6d91609

Browse files
committed
release GIL during blocking visionipc calls
1 parent a16cf1f commit 6d91609

2 files changed

Lines changed: 9 additions & 4 deletions

File tree

msgq/visionipc/visionipc.pxd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ cdef extern from "msgq/visionipc/visionipc_client.h":
5454
int num_buffers
5555
VisionBuf buffers[1]
5656
VisionIpcClient(string, VisionStreamType, bool, void*, void*)
57-
VisionBuf * recv(VisionIpcBufExtra *, int)
58-
bool connect(bool)
57+
VisionBuf * recv(VisionIpcBufExtra *, int) nogil
58+
bool connect(bool) nogil
5959
bool is_connected()
6060
@staticmethod
6161
set[VisionStreamType] getAvailableStreams(string, bool)

msgq/visionipc/visionipc_pyx.pyx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,13 +152,18 @@ cdef class VisionIpcClient:
152152
return self.extra.valid
153153

154154
def recv(self, int timeout_ms=100):
155-
buf = self.client.recv(&self.extra, timeout_ms)
155+
cdef cppVisionBuf * buf
156+
with nogil:
157+
buf = self.client.recv(&self.extra, timeout_ms)
156158
if not buf:
157159
return None
158160
return VisionBuf.create(buf)
159161

160162
def connect(self, bool blocking):
161-
return self.client.connect(blocking)
163+
cdef bool result
164+
with nogil:
165+
result = self.client.connect(blocking)
166+
return result
162167

163168
def is_connected(self):
164169
return self.client.is_connected()

0 commit comments

Comments
 (0)