【发布时间】:2011-11-06 01:53:00
【问题描述】:
默认情况下(无 .combine),foreach/%dopar% 以列表形式返回结果。列表中的结果顺序是否保证与循环/迭代的顺序相匹配?换句话说,顺序是否与顺序迭代时相同?或者该列表是否会随着并行任务的完成而填充?浏览文档,我看到有一个 .inorder 参数,但它似乎只适用于使用 .combine 函数时。
【问题讨论】:
默认情况下(无 .combine),foreach/%dopar% 以列表形式返回结果。列表中的结果顺序是否保证与循环/迭代的顺序相匹配?换句话说,顺序是否与顺序迭代时相同?或者该列表是否会随着并行任务的完成而填充?浏览文档,我看到有一个 .inorder 参数,但它似乎只适用于使用 .combine 函数时。
【问题讨论】:
当调用结束时,foreach 的结果将与“正常”循环的顺序相同。但是,不能保证它们“到达”的顺序:理论上(在并行化时,在实践中也是如此),第一项可能会比第二项更晚填写。
因此,您无法保证执行顺序(例如进度条或日志记录可能会被拼凑),但您可以放心,结果将按照您期望的顺序。
【讨论】: