Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用多核打印日志_R_Foreach_Parallel Processing_Domc - Fatal编程技术网

R 使用多核打印日志

R 使用多核打印日志,r,foreach,parallel-processing,domc,R,Foreach,Parallel Processing,Domc,使用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% +

使用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    
>库(foreach)
> 
>tmp
>tmp
>图书馆(doMC)
>registerDoMC(2)
> 
>tmp
>tmp
>sessionInfo()
R正在开发中(不稳定)(2014-01-29 r64898)
平台:x86_64-apple-darwin10.8.0(64位)
区域设置:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
附加基本包:
[1] 并行统计图形设备GRUTILS数据集
[7] 方法库
其他随附包裹:
[1] doMC_1.3.2迭代器_1.0.6 foreach_1.4.1
通过命名空间加载(未附加):
[1] 代码工具\u 0.2-8编译器\u 3.1.0工具\u 3.1.0
谢谢


Max

默认情况下,将foreach与doMC后端一起使用时,不会重定向workers的标准输出,因此除非您使用的是Mac OS X上的R.app或Windows上的Rgui等GUI,否则应显示输出。我刚刚在我的Mac上做了一个快速测试,看起来RStudio也从doMC/mclapply创建的工作人员那里扔掉了stdout

从终端执行R时,我看到Mac OS X 10.7.5上使用R3.0.2和“R正在开发(不稳定)(2014-02-13 r64986)”的工作输出。由于您使用的是稍旧的开发版本,因此可能存在一个问题,该问题随后已得到修复

您可以尝试使用doMC特定的“静默”选项显式打开输出:


>选择tmp此解决方案在Mac OS X 10.10.5上运行R3.2.2(2015-08-14)时似乎不再有效。@CraigW执行
X时是否看到输出?我收回它。从终端运行R时似乎显示输出,但从R.app GUI或RStudio不显示输出。有什么方法可以让这个解决方案在这些环境中工作吗?@CraigW我不知道有什么方法可以让stdout、stderr或消息在这些环境中显示。不建议在这些环境中使用mclappy,因为它使用fork系统调用。
> 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