Voglio eseguire una funzione che richiede meno di un secondo per l'esecuzione. Voglio eseguirlo in un ciclo ogni secondo. Non voglio aspettare un secondo tra l'esecuzione della funzione come farebbe Sys.sleep
.Come si esegue una funzione ogni secondo
while(TRUE){
# my function that takes less than a second to run
Sys.sleep(runif(1, min=0, max=.8))
# wait for the remaining time until the next execution...
# something here
}
ho potuto registrare un starttime <- Sys.time()
e fare un confronto ogni iterazione del ciclo, qualcosa di simile ...
starttime <- Sys.time()
while(TRUE){
if(abs(as.numeric(Sys.time() - starttime) %% 1) < .001){
# my function that takes less than a second to run
Sys.sleep(runif(1, min=0, max=.8))
print(paste("it ran", Sys.time()))
}
}
Ma la mia funzione non sembra mai essere eseguito.
So che Python ha un pacchetto per fare questo genere di cose. R ha anche uno che non conosco? Grazie.
Immagino che il problema sia che c'è una possibilità di 1/1000 di essere al momento giusto in ogni iterazione. Dovrebbe comunque essere eseguito alla fine, anche se non riesco a farlo ... – Frank
Sembra che tu voglia un processo cron in R. A seconda delle specifiche, potrebbe essere meglio farlo con i soliti strumenti da riga di comando. – Roland
Per @ il commento di Roland, assicuriamoci di non avere un [problema XY] (http://meta.stackexchange.com/q/66377). – JasonAizkalns