我创建了这个测试 Matlab 脚本文件:
numbers = [29 37 44 54 62];
for i=1:length(numbers)
fprintf('%d\n', numbers(i));
end
fprintf('***\n');
matlabpool local 5;
parfor i=1:length(numbers)
fprintf('%d\n', numbers(i));
end % image loop
fprintf('***\n')
for i=1:length(numbers)
fprintf('%d\n', numbers(i));
end
matlabpool close;
fprintf('***\n');
for i=1:length(numbers)
fprintf('%d\n', numbers(i));
end
当我运行它时,我始终得到以下输出:
29
37
44
54
62
***
112
111
107
117
115
***
29
37
44
54
62
***
29
37
44
54
62
块内打印看似随机fprintf
的parfor
一组数字,但它们始终相同(112、111、107、117、115)。知道为什么会这样吗?
更新
有趣的是,这只有在我从命令行运行脚本时才会发生:
matlabR2012b -nodesktop -nosplash -nodisplay -r "run parfortest.m; exit"
如果我首先打开一个 Matlab 会话并在parfortest
那里运行,那么数字会正确打印。