我正在尝试测试一个非常简单的parfor函数,该函数调用另外两个函数,每个函数都打印一个数字:1和2,所以我希望它会以随机顺序打印到控制台: 1 2 2 1 2 1 1 2
但它总会在另一个之前完成一个功能,并给我有序的输出: 1 1 1 1 2 2 2 2
所以对我而言,parfor似乎并不平行...... 这是我的代码
function mainfunction(hObject, eventdata, handles)
matlabpool ('open',2);
x=1;
y=2;
parfor i=1:2
if(i==1)
function1(x);
else
function2(y);
end
end
matlabpool close;
function function1(x)
for i=1:100
x
end
function function2(y)
for i=1:100
y
end
有没有人知道为什么这不起作用?感谢
答案 0 :(得分:0)
技术原因是您没有手动将输出刷新到命令窗口。 pause
为系统提供了执行此操作的时间,但除非您不关心延迟是什么,否则它可能会有点破解。一般可能更快的方案是调用drawnow
而不是pause
隐式调用它。 This page很好地总结了这个函数的用法。 Some even suggest在某些情况下同时使用drawnow
和pause
。更有趣commentary here。