你能超越“我的”吗;类型:EXEC";及;类型:完成“;在R中使用doSNOW和foreach时的输出?
我正在使用doSnow和foreach并行发送一组消息,但它们使我的日志变得杂乱无章,难以解析。下面是一个简单的例子:你能超越“我的”吗;类型:EXEC";及;类型:完成“;在R中使用doSNOW和foreach时的输出?,r,logging,parallel-processing,parallel-foreach,snow,R,Logging,Parallel Processing,Parallel Foreach,Snow,我正在使用doSnow和foreach并行发送一组消息,但它们使我的日志变得杂乱无章,难以解析。下面是一个简单的例子: library(foreach) library(doSNOW) numbers <- 1:6 cool_print <- function(x) print(paste0(x, " is cool")) cl <- makeCluster(2, outfile="") # "" passes me
library(foreach)
library(doSNOW)
numbers <- 1:6
cool_print <- function(x) print(paste0(x, " is cool"))
cl <- makeCluster(2, outfile="") # "" passes messages to standard out
registerDoSNOW(cl)
sns_responses <-
foreach(
x = numbers
) %dopar% {
cool_print(x)
}
stopCluster(cl)
我只想让它打印所有“很酷”的语句
你能做到吗?我是否可以在雪地里的某个地方设置一个选项,允许打印,但不允许打印其他东西?请参阅我的评论,了解为什么使用outfile=“”
很可能不是一个解决方案-这更像是一种无法真正工作的黑客行为
下面是一个使用框架(免责声明:我是作者)的解决方案,该框架尽可能接近您的示例,同时将工人产生的输出传递到主R流程:
库(foreach)
图书馆(未来)
注册基金()
cl这似乎不可能-消息是由snow
package().Oof中的函数无条件打印的。好啊感谢insight@CountorLook,这并不是说它在这里有什么不同,但是如果您没有使用“snow”软件包的具体原因,我建议您改为使用“parallel”软件包。在R 2.14.0中,“snow”包基本上被合并到了“parallel”中,“snow”现在或多或少被认为是“弃用”的。我将尝试一下!
Type: EXEC
Type: EXEC
Type: EXEC
Type: EXEC
[1] "1 is cool"
[1] "2 is cool"
Type: EXEC
[1] "3 is cool"
Type: EXEC
[1] "4 is cool"
Type: EXEC
[1] "5 is cool"
Type: EXEC
[1] "6 is cool"
> stopCluster(cl)
Type: DONE
Type: DONE