matlab - 如何在 PARFOR 循环中定期保存矩阵?
问题描述
我一直Parfor
在 Matlab 中使用并行循环(),这是我的代码的一部分。(它应该运行几天,所以我想定期保存我的输出。
parfor i = 1:N_boot
...
out1(i,:) = result1;
out2(i,:) = result2;
if mod(i,100) == 0
% Here, I want to save out1 and out2 (export with .mat file)
end
end
如何保存每 100out1
次out2
迭代?
(我也可以为每 100 次迭代保存工作空间)
提前致谢!
解决方案
我的建议是使用 重写您的代码parfeval
,然后您可以调用fetchNext
以获取输出。请记住,fetchNext 返回一个索引,因为结果可能不按顺序排列。所以基本上调用 fetchNext 100 次,将结果拼接在一起,保存。
另一种方法可能是parallel.pool.DataQueue
在您的 parfor 循环中使用 an ,通过返回数据并使用回调send
收集它。afterEach
推荐阅读
- php - 如何在 laravel 播种机中获取网站网址?
- ruby-on-rails - Rails API - 没有路线匹配 [POST]
- c# - 没有给出与“Person.Person(string, string)”所需的形式参数“firstName”相对应的参数
- java - java - 如何确定骑士在Java中到达棋盘上的任何位置需要多少步
- c++ - 平均 ADC 读数在图中有奇怪的步骤
- c# - 如何从 C# 调用 Delphi DLL
- rabbitmq - RabbitMQ、Vernemq 和 HiveMQ - 分发和 HA
- html - 设置表单中元素的宽度(以及在 DIV 中)
- c++ - 带有模板的类的构造函数
- spring-boot - 错误 SpringApplication IllegalAccessError 试图访问方法 org.springframework.beans.PropertyEditorRegistrySupport.getDefaultEditor