parfor不会同时从两个功能打印到屏幕?

时间:2015-01-05 02:48:49

标签: matlab parfor

我正在尝试测试一个非常简单的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

有没有人知道为什么这不起作用?感谢

1 个答案:

答案 0 :(得分:0)

技术原因是您没有手动将输出刷新到命令窗口。 pause为系统提供了执行此操作的时间,但除非您不关心延迟是什么,否则它可能会有点破解。一般可能更快的方案是调用drawnow而不是pause隐式调用它。 This page很好地总结了这个函数的用法。 Some even suggest在某些情况下同时使用drawnowpause。更有趣commentary here