【发布时间】:2020-06-01 14:04:33
【问题描述】:
我已经开始使用 clustermq 包作为 drake 管道的并行后端,并且对我观察到的性能改进印象深刻。我有兴趣评估在 drake 之外的设置中使用 clustermq / rzmq,但似乎无法使用 User Guide 中列出的 foreach 示例(在标题为“作为并行 foreach 后端”的小节中)工作。我在这里错过了什么?
在下面的示例中,在我的 4 核机器上,我希望以下代码在接近 5 秒内运行,但它在接近 20 秒内运行。当我使用类似的代码来运行一些繁重的处理时,我只观察到一个核心在做重要的工作。
library(foreach)
(n_cores <- parallel::detectCores())
#> [1] 4
clustermq::register_dopar_cmq(n_jobs = n_cores)
system.time(foreach(i = seq_len(n_cores)) %dopar% Sys.sleep(5))
#> Submitting 4 worker jobs (ID: 6856) ...
#> user system elapsed
#> 0.118 0.022 20.187
【问题讨论】:
标签: r parallel-processing zeromq parallel-foreach