Matlab的日记+工作调度程序

时间:2018-05-28 02:42:58

标签: matlab distributed-computing

我想使用日记('log.txt')来创建日志文件。

脚本使用createJob()+ createTask()或batch()作为Job运行。

创建了log.txt,但没有写入log.txt。

测试代码a.m:

c = parcluster;
j = createJob(c);
createTask(j, @b, 0, {});
submit(j);

b.m:

function [] = b()
    diary off
    delete b.txt
    diary b.txt
    disp('hello')
    diary off
end

是否有任何方便的方法可以在作业中启用日记功能https://ww2.mathworks.cn/help/distcomp/diary.html除外?

1 个答案:

答案 0 :(得分:0)

使用并行计算工具箱提交的作业可以自动捕获日记输出,而不是将diary与文件一起使用。此输出在执行过程中更新。如果使用batch命令创建作业,则默认情况下会捕获日记输出。这是一个可以证明日记输出正在更新的例子:

function [] = b()
for ii = 1:10
    fprintf('hello: %d\n', ii);
    pause(2);
end
end

然后像这样调用它:

j = batch(@b, 0);
wait(j, 'running');
while ~strcmp(j.State, 'finished')
    diary(j)
    pause(2)
end

(注意batch的第二个输入是b请求的输出参数的数量。这会导致输出如下所示打印到命令窗口:

Warning: The diary of this batch job might be incomplete because the job is still running. 
--- Start Diary ---
hello: 1
hello: 2
hello: 3
hello: 4

--- End Diary ---