如何在降雪时输出消息?
Posted
技术标签:
【中文标题】如何在降雪时输出消息?【英文标题】:How to output a message in snowfall? 【发布时间】:2012-02-10 05:46:45 【问题描述】:我正在 Windows 7 上使用降雪包进行模拟研究。
我喜欢每 10 次运行打印一条消息到主 R 控制台以监控进度,但它没有这样做。 IE。什么都没有打印出来
任何帮助将不胜感激。
runsim = function(nsim,n,mean,var)
cov = 0
for(i in 1:nsim)
if ( i %% 10==0)
cat("\n Running simulation",i)
dat = function1(n,mean,var)
cov = ...
cov / nsim
sfExport("function1","runsim")
sfLibrary(library1)
wrapper = function(n)
runsim(100,n,0.5,0.25)
Out<-sfLapply(1:100,wrapper)
【问题讨论】:
你可能需要sfCat
。
@Roman:我尝试了你的建议,替换了 cat vt sfCat。我收到以下错误消息Error in checkForRemoteErrors(val) : 2 nodes produced errors; first error: could not find function "sfCat"
关于如何修复它的任何想法?谢谢
您可以尝试使用 sfLibrary 将降雪加载到工作人员中。 sfCat 是降雪的一部分,默认情况下不会将包加载到工作程序中。
@Paul 感谢您的建议。这次没有错误消息,但又没有打印任何内容
【参考方案1】:
检查?sfCat
并找到上面写着的那一行:
sfCat 是一个调试功能,在所有从属设备上打印一条消息(出现在日志文件中)。
这告诉我们,我们需要在对sfInit
的调用中启用日志记录(参数slaveOutfile
)。然后,每次调用sfCat()
都会将内容转储到您指定的日志文件中。我也花了一段时间才弄清楚;-)
代码示例
if (!require("snowfall"))
install.packages("snowfall")
require("snowfall")
sfInit(parallel=TRUE, cpus=4, slaveOutfile="test.txt")
sfLibrary("snowfall", character.only=TRUE)
res <- sfClusterApplyLB(1:100, function(x)
sfCat(paste("Iteration ", x), sep="\n")
)
sfStop()
./test.txt
的输出
[...]
Calling a snowfall function without calling 'sfInit' first or after sfStop().
'sfInit()' is called now.
snowfall 1.84 initialized: sequential execution, one CPU.
Iteration 4
Type: EXEC
Iteration 92
Type: EXEC
Iteration 94
Type: EXEC
Iteration 96
Type: EXEC
Iteration 98
Type: EXEC
Iteration 100
ype: EXEC
Iteration 29
Type: EXEC
Iteration 31
Type: EXEC
Iteration 33
Type: EXEC
Iteration 35
Type: EXEC
Iteration 37
Type: EXEC
Iteration 39
Type: EXEC
Iteration 41
Type: EXEC
Iteration 43
Type: EXEC
Iteration 45
Type: EXEC
Iteration 47
Type: EXEC
Iteration 49
Type: EXEC
Iteration 51
Type: EXEC
Iteration 53
Type: EXEC
Iteration 55
Type: EXEC
Iteration 57
Type: EXEC
Iteration 59
Type: EXEC
Iteration 61
Type: EXEC
Iteration 63
Type: EXEC
Iteration 65
Type: EXEC
Iteration 67
Type: EXEC
Iteration 69
Type: EXEC
Iteration 71
Type: EXEC
Iteration 73
Type: EXEC
Iteration 75
Type: EXEC
Iteration 77
Type: EXEC
Iteration 79
Type: EXEC
Iteration 81
Type: EXEC
Iteration 83
Type: EXEC
Iteration 85
Type: EXEC
Iteration 87
Type: EXEC
Iteration 89
Type: EXEC
Iteration 91
Type: EXEC
Iteration 93
Type: EXEC
Iteration 95
Type: EXEC
Iteration 97
Type: EXEC
Iteration 99
EXEC
Iteration 74
Type: EXEC
Iteration 76
Type: EXEC
Iteration 78
Type: EXEC
Iteration 80
Type: EXEC
Iteration 82
Type: EXEC
Iteration 84
Type: EXEC
Iteration 86
Type: EXEC
Iteration 88
Type: EXEC
Iteration 90
自己的问题
有没有人知道如何“控制”进入日志文件的具体内容? 例如,最好包含有关哪个工人完成了哪个工作等的信息。
【讨论】:
snowfall 和 doSnow 有什么区别? 我找到了函数Sys.getpid()
,我将其输出附加到sfCat
以识别工人。例如:sfCat(Sys.getpid(), msg)
以上是关于如何在降雪时输出消息?的主要内容,如果未能解决你的问题,请参考以下文章