簡體   English   中英

如何將foreach%dopar%日志寫入單獨的文件

[英]How to write foreach %dopar% logs to separate files

我使用R來運行Ant Colony Optimization,並且通常會多次重復相同的優化以交叉驗證我的結果。 我希望通過與foreachdoParallel包並行運行進程來節省時間。

我的代碼的可重現的例子會很長,所以我希望這就足夠了。 我想我設法讓代碼運行如下:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM