我试图在 R 中运行一个模拟,在那里我制作了一大堆系统发育树。树模拟有点问题,因为它的运行时间变化很大,有时是 0.005 秒,有时是几分钟。我想避免慢树,所以我尝试使用 evalWithTimeout 来跳过它们。到目前为止,我遇到了问题,因为我不能让它杀死慢任务而不杀死循环。我的问题与this question类似,但该问题的解决方案对我没有帮助。
library(TreeSim)
library(R.utils)
for (i in 1:100){
tryCatch(
expr = {
evalWithTimeout(sim.rateshift.taxa(10,1,c(0.5,2),c(0.5,0),
c(1,1),c(0,0.5),complete=F),
timeout=0.005)
},
TimeoutException = function(ex) cat("Timeout. Skipping.\n")
)
print(i)
}
这就是我到目前为止所拥有的。无论模拟是否超过时间限制,我都希望它继续打印“i”,但目前它给了我“达到 CPU 时间限制”错误并停止。