[英]How to write foreach %dopar% logs to separate files
我使用R
来运行Ant Colony Optimization,并且通常会多次重复相同的优化以交叉验证我的结果。 我希望通过与foreach
和doParallel
包并行运行进程来节省时间。
我的代码的可重现的例子会很长,所以我希望这就足够了。 我想我设法让代码运行如下:
result <- list()
short <- function(n){
for(n in 1:10){
result[[n]] <- ACO(data, ...)}}
foreach(n=1:50) %dopar% short(n)
在ACO()函数中,我连续创建具有中间结果的对象(例如当前的信息素级别),我使用write.table(..., append=TRUE)
来保存,以跟踪迭代及其结果。 现在我正在并行运行进程,我写的文件包含所有进程的结果,我无法分辨数据属于哪个进程。 因此,我想为每个进程编写不同的文件。
一般来说,在使用并行处理时保存中间结果的最佳方法是什么?
您可以使用log4r
包来写入日志文件中所需的信息。 关于包的更多信息这里 。
您必须在short
函数中添加的代码示例:
# Import the log4r package.
library('log4r')
# Create a new logger object with create.logger().
logger <- create.logger()
# Set the logger's file output.
logfile(logger) <- 'base.log'
# Set the current level of the logger.
level(logger) <- 'INFO'
# Try logging messages with different priorities. # At priority level INFO, a call to debug() won't print anything.
debug(logger, 'Iretation and result info')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.