How can I send a variable from the client to a running function on a worker?
古いコメントを表示
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?
採用された回答
その他の回答 (1 件)
Thomas Falch
2025 年 5 月 15 日
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
カテゴリ
ヘルプ センター および File Exchange で Variables についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!