【发布时间】:2016-11-15 21:14:54
【问题描述】:
我正在运行一个带有 parfor 循环的小脚本。该脚本以以下行开头:
parfor i=1:length(vX)
fprintf('%d/%d\n',i,length(X));
...
显然我应该马上看到打印输出。当我使用由matlabpool(2) 打开的两个工人池运行它时,我看到 no 打印输出。当我关闭工作人员并保持 parfor 循环时,我会看到打印输出,但只有在我按 ctrl-c 时才会看到。当我将parfor 更改为常规for 时,我看到了输出。请注意,我从未见过循环运行完成,因为它很长,但打印输出是脚本的第二行,应该立即发生,除非在 matlab 中存在一些我不知道的缓冲区刷新问题。
发生了什么事??
【问题讨论】:
-
这是否意味着您立即按 ctrl-c?您等待输出出现在控制台中多长时间?
parfor循环是否完成? -
不,我等待几秒钟然后按 ctrl-c。不过,打印输出应该是即时的。我会将此信息添加到问题中。
-
也许
stdout上的parfor上存在某种锁定?