首页
学习
活动
专区
圈层
工具
发布

不印刷
EN

Stack Overflow用户
提问于 2013-01-08 16:32:47
回答 2查看 2.5K关注 0票数 4

我正在运行一个带有parfor循环的小脚本。脚本以下面的行开始:

代码语言:javascript
复制
parfor i=1:length(vX)
    fprintf('%d/%d\n',i,length(X));
    ...

所以很显然我应该马上看指纹。当我用一个由matlabpool(2)打开的由两个工人组成的池运行它时,我看到没有输出。当我关闭工人,保持parfor循环,我看到打印,但只有当我点击ctrl。当我将parfor转换为常规的for时,我会看到输出。请注意,我从来没有看到循环运行到完成,因为它是相当长的,但打印是第二行脚本,应该立即发生,除非有一些缓冲区冲洗问题,我不知道在matlab中。发生什么事了??

EN

回答 2

Stack Overflow用户

发布于 2013-01-08 17:30:36

我怀疑延迟是由于设置parfor循环的开销造成的。

根据我的经验,初始化循环需要几秒钟,最多15秒。当我的a循环中的代码使用具有大内存足迹的变量时,情况尤其如此,因为变量必须复制到工作人员。

工作人员之间的数据复制是通过网络进行的,一个基本的网络活动监视器应该会显示该活动。我发现确定我的parfor执行时间中有多少会被消耗掉初始化工作人员是有用的。

我一直在parfor循环中使用parfor;但是,由于循环迭代不是按顺序进行的,所以我试图对生成的输出保持创造性。

如果您正在寻找的只是一个进度指示符,请检查:http://www.mathworks.com/matlabcentral/fileexchange/32101-progress-monitor-progress-bar-that-works-with-parfor

票数 3
EN

Stack Overflow用户

发布于 2016-11-15 13:07:53

我也遇到了同样的问题,我花了几个月的时间来寻找解决方案。但最后我还是求助于

代码语言:javascript
复制
disp(['text ',num2str(variable));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14219676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档