亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用%dopar%時如何打印

使用%dopar%時如何打印

大話西游666 2019-12-21 12:59:26
我有一個與作為后端foreach使用的循環。如何讓循環在每次迭代中打印出一些內容?%dopar%doSNOW我下面的代碼是我當前正在使用的代碼,但未打印任何內容。foreach(ntree=rep(25,2),.combine=combine,.packages='randomForest',    .inorder=FALSE) %dopar% {        print("RANDOM FOREST")        randomForest(classForm,data=data,na.action=na.action,do.trace=do.trace,ntree=ntree,mtry=mtry)    }   
查看完整描述

3 回答

?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

這里發布了許多好的解決方案,但是我發現最簡單的方法是登錄到套接字并使用單獨的過程在控制臺中輸出日志調用。


我使用以下功能:


log.socket <- make.socket(port=4000)


Log <- function(text, ...) {

  msg <- sprintf(paste0(as.character(Sys.time()), ": ", text, "\n"), ...)

  cat(msg)

  write.socket(log.socket, msg)

}

然后,您可以將日志語句放入代碼中,例如:


Log("Processing block %d of %d", i, n.blocks)

可以使用任何簡單的套接字偵聽工具實時查看日志輸出。例如,在Linux上使用netcat:


nc -l 4000

上面的日志語句將在netcat終端中顯示為:


2014-06-25 12:30:45: Processing block 2 of 13

該方法的優點是可以遠程工作,并在您需要記錄時提供詳細的輸出。


ps對于Windows上的用戶,請參閱Jon Craton的netcat端口。


pps我猜write.socketR函數可能不是線程安全的,但是除非您以高頻率登錄,否則您不太可能遇到任何問題。有一些需要注意的地方。


查看完整回答
反對 回復 2019-12-21
  • 3 回答
  • 0 關注
  • 904 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號