【发布时间】:2015-09-01 14:55:45
【问题描述】:
假设我有一个在 foreach 循环中进行各种计算的代码,为简单起见,就这样吧:
foreach( idx = 1:10 ) %dopar% {
set.seed(idx)
smp <- rnorm(10)
print( sprintf('Index: %d', idx) )
print( cat(sprintf('Value: %f \n', smp[1:10])) )
}
代码的主要思想是它的输出是以这样的方式编写的,即索引显示一次,然后跟随主代码的各种结果。使用%do% 时,很容易读取日志文件并使用这种结构进行调试,但是使用%dopar% 时,日志文件会变得杂乱无章。
问题:在不改变代码的情况下,有没有办法让每个工作人员创建自己的输出文件?我是 doParallel 的新手,所以到目前为止我发现的唯一并行输出方法是使用以下方法:
library(doParallel)
cl <- makeCluster(4, outfile = 'log.txt')
registerDoParallel(cl)
但是,outfile 只接受一个字符串作为参数,还没有找到将名称向量传递给它的方法。那么,也许有一种方法可以为每个工作人员指定一个输出文件?
注意:在 Windows 7 上工作。
【问题讨论】:
标签: r parallel-processing