How can I send a variable from the client to a running function on a worker?
Afficher commentaires plus anciens
If I have a function running on a worker via parfeval or a job, can I have it run in a loop until I send a stop signal to it from the client?
Réponse acceptée
Plus de réponses (1)
Thomas Falch
le 15 Mai 2025
Starting in R2025a, it's possible to use the new "any-destination" PollableDataQueue to greatly simplify Ed's solution. The any-destination queue makes it much simpler to send data from the client to a worker (or from one worker to another).
The new queue is documented here: PollableDataQueue - Send and poll data between client and workers - MATLAB
The code to send a stop signal to a worker could look like this:
queue = parallel.pool.PollalbleDataQueue(Destination="any");
f = parfeval(@runUntilStopSignalReceived, 0, queue);
% Let the function run for a while, then stop it
pause(10);
queue.send("stop")
function runUntilStopSignalReceived(queue)
keepGoing = true
while keepGoing
doSomeWork()
[data, didReceive] = queue.poll()
if didReceive && strcmp(data, "stop")
% We got the stop signal, stop
break;
end
end
Catégories
En savoir plus sur Parallel Computing Fundamentals dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!