49

parSapplythenを使用して関数を呼び出した場合printmessageまたはcatその関数内のステートメントがコンソールに出力されないようです。

私のプロセスには非常に長い時間がかかるため、進行状況を確認し、完了時に結果を出力する何らかの方法が必要です。並列プロセスからコンソールに出力できる特別なコマンドはありますか?

例:

library(parallel)

oneloop = function(x) {
  for(i in 1:50) {
    a = rnorm(100000)
    a = sort(a)
  }
  print(x)
  message(x)
  cat(x)
}

cl <- makeCluster(5)
output = parSapply(cl, 1:10, oneloop)
stopCluster(cl)
4

2 に答える 2

47

outfileparam inを使用makeClusterすると、出力をファイルにリダイレクトし、そのファイルをチェックしてプログラムの進行状況を確認できます。

興味深いことに、Linux マシンで""はコンソールに出力するように設定されていますが、Windows マシンではうまくいきません。ファイル出力は両方で機能します。

于 2013-05-23T15:31:41.300 に答える
4

Windows で doParallel パッケージ バージョン 1.0.8 を使用makeClusterしています。単純な Powershell コマンドを使用して追跡outfileできます。私のために働きます。outfilepowershell Get-Content c:/path/to/log/mylog.txt -wait

于 2015-01-29T19:11:02.490 に答える