Выполните функцию асинхронно на параллельном рабочем пула
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