[英]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.