默认情况下(no .combine),foreach /%dopar%在列表中返回结果。列表中的结果顺序是否保证与循环/迭代的顺序相匹配?换句话说,顺序是否与顺序迭代时相同?或者,当并行任务完成时,列表是否会填充?浏览文档时,我看到有一个.inorder参数,但它似乎只适用于使用.combine函数。
答案 0 :(得分:23)
当通话结束时,foreach
的结果将与“正常”循环的顺序相同。但是,不能保证它们到达那里的顺序:理论上(当并行化时,也在实践中),第一项可能比第二项填写得晚。
因此,您无法保证执行顺序(例如,进度条或日志记录可能会被拼凑),但您可以放心,结果将按您期望的顺序排列。