foreach% dopar% - гарантия порядка результатов? - PullRequest
16 голосов
/ 29 августа 2011

По умолчанию (без .combine) foreach /% dopar% возвращает результаты в виде списка. Гарантирован ли порядок результатов в списке в соответствии с порядком цикла / итерации? Другими словами, будет ли порядок такой же, как при последовательной итерации? ИЛИ список заполняется при выполнении параллельной задачи? Просматривая документацию, я вижу, что есть параметр .inorder, но, похоже, он применяется только при использовании функции .combine.

1 Ответ

23 голосов
/ 29 августа 2011

Когда вызов завершится, результат foreach будет в том же порядке, что и для «нормального» цикла. Тем не менее, нет никакой гарантии, в каком порядке они «доберутся»: теоретически (и при распараллеливании, а также на практике) первый элемент может быть заполнен позже, чем второй.

Таким образом, у вас нет никаких гарантий относительно порядка выполнения (например, могут быть загружены индикаторы выполнения или ведения журнала), но вы можете быть уверены, что результаты будут в том порядке, в котором вы ожидаете их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...