我想插入一个foreach
超时控件,如下所示:
#Parallel function
runnable_X<-function(ID) {
require(R.utils)
Sys.sleep(ID)
return(ID)
}
#foreach function with timeout
foreach_timeOut<-function() {
tryCatch({
require(R.utils)
withTimeout({
out_list<-foreach(ID=c(1:20),.options.multicore=list(preschedule=FALSE)) %dopar% runnable_X(ID)
},
timeout=5); ### Cumulative Timeout for entire process
}, TimeoutException=function(ex) {
return("Time Out!")
})
}
library(doParallel)
require(R.utils)
#Parallel registration
registerDoParallel()
#NUmber of cores
options(cores=5)
foreach_timeOut()
我有这个错误:
Error in runnable_X(ID) :
task 1 failed - "could not find function "runnable_X""
如果我在runnable_X
内声明foreach_timeout
函数,则不会发生这种情况,但我不能这样做。
答案 0 :(得分:1)
如果使用内置函数,则必须将它们添加到集群中:
XorStr( "" )
答案 1 :(得分:1)
感谢@karen提供的帮助(+1),以防我们有一个集群,但我发现这个解决方案更适合我的情况。
export
我将使用我的函数
添加foreach#foreach function with timeout
foreach_timeOut<-function() {
tryCatch({
require(R.utils)
withTimeout({
out_list<-foreach(ID=c(1:20),
.options.multicore=list(preschedule=FALSE),
.export = c("runnable_X")
) %dopar% runnable_X(ID)
},
timeout=5); ### Cumulative Timeout for entire process
}, TimeoutException=function(ex) {
return("Time Out!")
})
}
library(doParallel)
require(R.utils)
#Parallel registration
registerDoParallel()
#NUmber of cores
options(cores=5)
foreach_timeOut()
[1] "Time Out!"
命令
string registry_key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
其他topic相关。