Matlab的日记+作业调度器

标签 matlab distributed-computing

我想用 diary(‘log.txt’) 创建一个日志文件。

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

创建了 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

最佳答案

使用 Parallel Computing Toolbox 提交的作业可以自动捕获日记输出,而不是将 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 ---

关于Matlab的日记+作业调度器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50558459/

相关文章:

python - 高效地在 Python 列表中查找索引(与 MATLAB 相比)

python - 如何从 ThingSpeak channel 的特定字段访问值(数组)?

arrays - 在 MATLAB 中从数组中选择元素

rabbitmq - 使用 RabbitMQ 进行分布式通信和处理

ASP.NET InProc 缓存与分布式缓存

web - 当使用最终一致的数据存储时,用户是否应该被定向到特定的数据节点?

algorithm - 搜索引擎,比如谷歌的页面排名算法如何跨分布式/多台机器工作?

c - OpenMp 和 MPI 仅通过 MPI 没有加速

user-interface - MATLAB:修改 getline() 以删除 'end input on double-click' 功能

matlab - x = x( :) mean in matlab, where x is a vector?