R 并行时怎么输出消息

R
Author

Shixiang Wang

Published

July 18, 2025

并行计算可以加快一些耗时流程的分析,但 R 如果调用如 mclapply() 等进行并行计算, 无法输出调用函数内部的打印信息,这里有一个小技巧,记录一下。

构建一个新的消息函数,在调用函数内部进行使用,用来打印提示信息。

#' Function which prints a message using shell echo; useful for printing messages from inside mclapply when running in Rstudio
message_parallel <- function(...){
  system(sprintf('echo "\n%s\n"', paste0(..., collapse="")))
}

这里多个 \n 可根据情况进行去除。

mcprogress

找到一个包mcprogress可以直接解决这个问题。

library(mcprogress)

# toy example
res <- pmclapply(letters[1:20], function(i) {
                 Sys.sleep(0.2 + runif(1) * 0.1)
                 setNames(rnorm(5), paste0(i, 1:5))
                 }, mc.cores = 2, title = "Working")

最核心的输出技术还是和上面的函数是相同的。


参考:https://stackoverflow.com/questions/17345837/printing-from-mclapply-in-r-studio

本站总访问量 次(来源不蒜子按域名记录)