Skip to content

Commit 1703215

Browse files
committed
Allow extra parameters to be passed to remote processes
Signed-off-by: David Plowman <[email protected]>
1 parent ee6669e commit 1703215

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

picamera2/remote.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ def _return_thread(self):
7676
future.set_result(result)
7777
request.release()
7878

79-
def send(self, request: picamera2.request.CompletedRequest):
79+
def send(self, request: picamera2.request.CompletedRequest, **kwargs):
8080
"""
8181
Sends a request to the child process.
8282
@@ -85,7 +85,7 @@ def send(self, request: picamera2.request.CompletedRequest):
8585
"""
8686
future = Future()
8787
request.acquire()
88-
remote = RemoteRequest(request)
88+
remote = RemoteRequest(request, **kwargs)
8989
self._send_queue.put(remote)
9090
self._requests_sent.append((request, future))
9191
return future
@@ -141,7 +141,7 @@ def run(self):
141141
"""Main loop of the child process."""
142142
self._child_init()
143143
while (request := self._capture_request()) is not None:
144-
value = self._run(request)
144+
value = self._run(request, **request._kwargs)
145145
self._return_request(value)
146146

147147
def _map_fd(self, picam2_fd: int):
@@ -222,7 +222,7 @@ class RemoteRequest:
222222
request: The CompletedRequest object
223223
"""
224224

225-
def __init__(self, request: picamera2.request.CompletedRequest):
225+
def __init__(self, request: picamera2.request.CompletedRequest, **kwargs):
226226
"""Initializes and serializes the request."""
227227
self.request = request
228228
self._metadata = request.get_metadata()
@@ -240,6 +240,8 @@ def __init__(self, request: picamera2.request.CompletedRequest):
240240
else:
241241
self._buffers_fd[name] = self._serialize_stream(name)
242242

243+
self._kwargs = kwargs
244+
243245
del self.request
244246

245247
def _serialize_stream(self, stream_name: str):
@@ -410,7 +412,7 @@ def __enter__(self):
410412
def __exit__(self, exc_type, exc_value, exc_traceback):
411413
self.close()
412414

413-
def send(self, request: picamera2.request.CompletedRequest):
415+
def send(self, request: picamera2.request.CompletedRequest, **kwargs):
414416
"""Sends a request to the child process."""
415417
process = min(
416418
enumerate(self._processes),
@@ -421,7 +423,7 @@ def send(self, request: picamera2.request.CompletedRequest):
421423
)[1]
422424
self._process_index = (self._process_index + 1) % self._process_count
423425

424-
return process.send(request)
426+
return process.send(request, **kwargs)
425427

426428
def close(self):
427429
"""Closes the Pool."""

0 commit comments

Comments
 (0)