主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

getCurrentValueStore

获取当前作业或池的数据存储

自 R2022a 起

说明

store = getCurrentValueStore 获取工作单元当前作业或池的 ValueStore 对象。在执行作业期间,使用 store 将数据从工作单元发送回客户端。如果 getCurrentValueStore 在非工作单元 MATLAB® 会话中执行,则会得到空结果。

示例

示例

全部折叠

对工作单元运行仿真并在客户端上检索作业的数据存储。数据存储是一个具有键值条目的 ValueStore 对象。

以下仿真查找随机矩阵的奇异值并将结果存储在 ValueStore 对象中。

type workerSvdCode
function workerSvdCode(models)
% Get the ValueStore of the current job
store = getCurrentValueStore;
for i = 1:numel(models)
    % Store simulation results in the ValueStore object
    pause(1)
    key = strcat("result_",num2str(i));
    store(key) = svd(rand(models(i)));
    store("progress") = i/numel(models);
end
end

当向 ValueStore 对象添加条目时,将执行以下回调函数。

type handleNewEntry
function handleNewEntry(store,key)
if strcmp(key,"progress")
    fprintf("Progress update: %.2f %%\n",store(key)*100);
else
    fprintf("Result %s added\n",key);
end
end

使用默认集群配置文件在工作单元上运行批处理作业。

models = [8,16,32,20];
c = parcluster;
job = batch(c,@workerSvdCode,0,{models});

在作业仍在运行时检索客户端上的 ValueStore 对象。显示作业的进度。

store = job.ValueStore;
store.KeyUpdatedFcn = @handleNewEntry;
wait(job);
Result result_1 added
Progress update: 25.00 %
Result result_2 added
Progress update: 50.00 %
Result result_3 added
Progress update: 75.00 %
Result result_4 added
Progress update: 100.00 %

从对象中获取键 "result_1" 指定的条目值。

val1 = store("result_1")
val1 =

    4.3318
    1.2988
    1.1040
    0.8813
    0.5711
    0.3991
    0.2092
    0.1048

输出参量

全部折叠

由 MATLAB 客户端和工作单元共享的数据存储,以 ValueStore 对象或空双精度形式返回。

版本历史记录

在 R2022a 中推出