Wie funktioniert die parfümale Funktion von MATLAB?
In der MATLAB-Dokumentation haben wir ein Codebeispiel für dasparfeval
Funktion. Ich habe einige Fragen dazu. Dies ist der Code:
p = gcp();
%// To request multiple evaluations, use a loop.
for idx = 1:10
f(idx) = parfeval(p,@magic,1,idx); % Square size determined by idx
end
%// Collect the results as they become available.
magicResults = cell(1,10);
for idx = 1:10
%// fetchNext blocks until next results are available.
[completedIdx,value] = fetchNext(f);
magicResults{completedIdx} = value;
fprintf('Got result with index: %d.\n', completedIdx);
end
Wie funktioniertparfeval
ArbeitSendet diese Funktion jede (idx) Auswertung desmagic
Funktion zu einem bestimmten Arbeiter?Wenn wir nur eine Codezeile haben würdenf = parfeval(p,@magic,1,10);
:
parfeval
undparfevalOnAll
?Was ist der Unterschied zwischenfetchNext
undfetchOutputs
?Warum brauchen wirfetchNext
nach dem erstenfor
Schleife und eine zweite Schleife, um die Ergebnisse zu erhalten?Wir haben nicht alle Ergebnisse nach der ersten Schleife? Warum Ich denke, wir warten darauf, dass die Mitarbeiter den Prozess in der zweiten Schleife abschließen. Ist das wahr? Können wir das nicht ohne Schleife machen?Ich denke, wir können @ verwendmagicResults{idx} = fetchOutputs(f(idx));
in der zweiten Schleife. Wir haben die gleichen Ergebnisse. Was ist der Unterschied zwischen diesen beiden Strukturen?