1

foreach と doMC を使用して、並行して実行しているときに画面を取得catおよび/または画面に出力する方法はありますか? message例えば:

> library(foreach)
> 
> tmp <- foreach(i=1:3) %do% 
+   cat("sqrt(i) =", sqrt(i), "\n")
sqrt(i) = 1 
sqrt(i) = 1.414214 
sqrt(i) = 1.732051 

> 
> tmp <- foreach(i=1:3) %do% 
+   message("i^2 =", i^2, "\n")
i^2 =1

i^2 =4

i^2 =9

>       
> library(doMC)
> registerDoMC(2)
> 
> tmp <- foreach(i=1:3) %dopar% 
+   cat("sqrt(i) =", sqrt(i), "\n")
> 
> tmp <- foreach(i=1:3) %dopar% 
+   message("i^2 =", i^2, "\n")
>   
> sessionInfo()
R Under development (unstable) (2014-01-29 r64898)
Platform: x86_64-apple-darwin10.8.0 (64-bit)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] parallel  stats     graphics  grDevices utils     datasets 
[7] methods   base     

other attached packages:
[1] doMC_1.3.2      iterators_1.0.6 foreach_1.4.1  

loaded via a namespace (and not attached):
[1] codetools_0.2-8 compiler_3.1.0  tools_3.1.0    

ありがとう、

マックス

4

1 に答える 1

2

デフォルトでは、doMC バックエンドで foreach を使用する場合、ワーカーからの stdout はリダイレクトされないため、Mac OS X の R.app や Windows の Rgui などの GUI を使用していない限り、出力が表示されます。Mac で簡単なテストを試みたところ、RStudio は doMC/mclapply によって作成されたワーカーから stdout も破棄しているようです。

ターミナルから R を実行すると、R 3.0.2 を使用して Mac OS X 10.7.5 でワーカー出力が表示され、「R Under development (unstable) (2014-02-13 r64986)」が表示されます。少し古い開発ビルドを使用しているため、後で修正された問題があった可能性があります。

doMC 固有の「サイレント」オプションを使用して、出力を明示的にオンにすることができます。

> opts <- list(silent=FALSE)
> tmp <- foreach(i=1:3, .options.multicore=opts) %dopar% message('i^2 = ', i^2)
i^2 = 1
i^2 = 4
i^2 = 9

これにより、 mclapply が で呼び出されmc.silent=FALSEます。それでも問題が解決しない場合は、自分に合った最新の開発ビルドを試すことをお勧めします。

于 2014-02-13T19:30:24.523 に答える