Выполните функцию асинхронно на параллельном рабочем пула
F = parfeval(p,fcn,numout,in1,in2,...)
F = parfeval(fcn,numout,in1,in2,...)
F = parfeval(p,fcn,numout,in1,in2,...) запрашивает асинхронное выполнение функционального fcn на рабочем, содержавшемся в параллельном пуле p, ожидая выходные аргументы numout и предоставляя как входные параметры in1,in2,.... Асинхронная оценка fcn не делает блока MATLAB. F является параллелью. Объект FevalFuture, из которого могут быть получены результаты, когда рабочий завершил оценку fcn. Оценка fcn всегда продолжает, если вы явным образом не отменяете выполнение путем вызова cancel(F). Чтобы запросить несколько функциональных оценок, необходимо вызвать parfeval многократно. (Однако parfevalOnAll может запустить ту же функцию на всех рабочих.)
F = parfeval(fcn,numout,in1,in2,...) запрашивает асинхронное выполнение на текущем параллельном пуле. Если никакой пул не существует, это запускает новый параллельный пул, если ваши параллельные настройки не отключают автоматическое создание пулов.
Отправьте один запрос к параллельному пулу и получите выходные параметры.
p = gcp(); % Get the current parallel pool f = parfeval(p,@magic,1,10); value = fetchOutputs(f); % Block until f completes
Представьте вектор нескольких будущих запросов в for - цикл и получите отдельные будущие выходные параметры, когда они становятся доступными.
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
afterAll | afterEach | cancel | fetchNext | fetchOutputs | isequal | параллель. FevalFuture | parallel.pool.Constant | parfevalOnAll | parpool | ticBytes | tocBytes | wait