Можно ли параллельно запускать итерации al oop на windows при ... изменении переменных из глобальной среды?
Нет (*). Все значения, установленные внутри конструкции foreach() %dopar% { ... }
, должны возвращаться в конце каждой итерации. Это дизайн и философия пакета foreach . См. «Пример 2: слегка сложный for-l oop» в сообщении в блоге «Распараллелить For-L oop, переписав его как вызов Lapply» от 2019-01-11 (заявление об отказе: Я автор) о том, как вернуть несколько значений.
(*) Существуют различные обходные пути, которые взаимодействуют с использованием других каналов, например, файловой системы. Однако такие решения следует использовать только в том случае, если все другие альтернативы были исчерпаны и потерпели неудачу. Я настоятельно рекомендую такие альтернативные решения, потому что вы будете сталкиваться с другими типами проблем с приближенными. В вашем случае это вам определенно не нужно.
Возможно ли параллельно выполнять итерации al oop на windows, одновременно отображая сообщения ...?
Да, если вы используете doFuture foreach адаптер (отказ от ответственности: я автор). Когда вы используете это, вы получите доступ ко всем future framework, который включает ретрансляцию вывода, сообщений, предупреждений и других типов условий. Вы можете прочитать об этом в блоге 'future 1.9.0 - Выход из будущего' от 2018-07-23 (заявление об отказе: я автор).
> library(doFuture)
> registerDoFuture() ## tell foreach to use the future framework
> ## Create a local cluster of two local workers
> plan(multisession, workers = 2L)
> library(foreach)
> y <- foreach(x = 1:3) %dopar% {
cat(paste0("x = ", x, "\n"))
sqrt(x)
}
x = 1
x = 2
x = 3
>