Alb*_*dor 8 parallel-processing r while-loop
我想知道是否/如何在R中并行化while循环.
如果不可能或合理地认为难以完成,我将非常感谢另一种选择,可能使用并行for循环.
Hen*_*ikB 10
您可以将期货与任何循环R构造(包括for()和while()循环)一起使用.期货在未来的套餐中实施(我是作者).
目前尚不清楚您想要用于while循环的条件.这将有助于提供更准确的答案.这里就是同时状况确实的示例不依赖于任何的计算结果的:
library("listenv")
library("future")
plan(multiprocess, workers = 2L)
res <- listenv()
ii <- 1L
while (ii <= 5) {
## This is evaluated in parallel and will only block
## if all workers are busy.
res[[ii]] %<-% {
list(iteration = ii, pid = Sys.getpid())
}
ii <- ii + 1L
}
## Resolve all futures (blocks if not already finished)
res <- as.list(res)
str(res)
List of 5
$ :List of 2
..$ iteration: int 1
..$ pid : int 15606
$ :List of 2
..$ iteration: int 2
..$ pid : int 15608
$ :List of 2
..$ iteration: int 3
..$ pid : int 15609
$ :List of 2
..$ iteration: int 4
..$ pid : int 15610
$ :List of 2
..$ iteration: int 5
..$ pid : int 15611
Run Code Online (Sandbox Code Playgroud)
如果你希望你的while条件依赖于一个或多个并行结果(in res[[ii]])的结果,那么事情会变得复杂得多,因为那时你需要弄清楚如果未来(=并行任务)仍未发生会发生什么解决; 你应该检查一下,比如说,之后再进行5次迭代,或者你应该等一下.这是并行算法的设计问题,而不是如何实现.一切皆有可能.
PS.我不明白这个问题得到的支持.这可能是因为你的问题措辞不清楚/不太清楚 - 记得尽可能地尽可能地"帮助帮助者帮助你".如果downvotes是因为while循环,我(显然)请求不同意.