Behaviour ofparfeval depends on debugging state (Bug?)

1 view (last 30 days)
tommsch on 29 Jan 2021
Answered: Edric Ellis on 29 Jan 2021
I have the following function, which should return false. If I set a breakpoint at the first line, and then step through the program, I get the message:
Analyzing and transferring files to the workers ...done
and the function returns false. But when I just execute the function, no message is issued and the function returns true. Is this a bug?
function ret = testparfeval;
F = parfeval( gcp(), @afssasgdd, 0 ); %this is a non-existent function
while( isequal(F(1).State,'queued') );
pause( 0.1 ); end;
ret = isempty( F.Error );

Accepted Answer

Edric Ellis
Edric Ellis on 29 Jan 2021
I suspect this is because when you don't stop in the debugger, the function can return as soon as F gets into state 'running', i.e. before it gets to state 'finished'. Rather than polling the State property, I'd recommend using the wait method, like this:
F = parfeval(gcp(), @afssasgdd, 0);
didError = ~isempty(F.Error)
The wait method can take an optional timeout if you wish.

More Answers (0)




Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!