setTimeLimit如何在R中工作?
我想在R中掌握setTimeLimit()
,并且我的经验已经导致了几个相关的问题,所以也许最基本的问题是:这是如何工作的? (我一直在寻找来自R.utils
evalWithTimeout()
,它可能适合我的目的稍微好一些,但是它建立在这个函数上。)
以下是我想要弄清楚的关键事项:
它如何监控经过的时间? 即它似乎被插入到流量控制中,那么它是如何做到的? 能够拥有“背景”流程非常酷,可以用于报告状态,检查点等等。
我能确定有多少时间才会被触发吗? 我意识到我可以将它包装起来并在某处存储大约在调用点(即proc.time()
的输出proc.time()
消耗的耗用时间和CPU时间。 但是,这个函数已经存储了这些地方,我想知道在哪里,或者至少如何确定剩余时间。
如果R控制台闲置,是否可以做一些有用的事情? 能够监视elapsed.time()
和cpu.time()
非常有用。 我希望能够监视R什么时候处于空闲状态,但从修补程序看来,它需要提交或完成一个命令。 而且,仅输出错误不会触发后续操作。 (也许我需要更多地关注evalWithTimeout
。)
帮助信息表明它可以适用于C或Fortran,但不提供示例。 有关如何完成这件事的任何建议?
为了显示在C函数调用期间setTimeLimit不起作用:
rfunction <- function(){
repeat{
x <- rnorm(100);
}
}
cfunction <- function(){
x <- eigen(matrix(rnorm(1e6), 1e3));
}
setTimeLimit(3);
system.time(try(rfunction(), silent=TRUE))
system.time(try(cfunction(), silent=TRUE))
链接地址: http://www.djcxy.com/p/9869.html