Сроки обещаний в R
Я измеряю простую функцию, которая ждет 1 секунду, а затем печатает число. Обернув его обещанием, я ожидал, что обещания будут выполняться после того, как время будет завершено, что, похоже, не происходит. Насколько я понимаю, промисы позволяют запускать следующий код без завершения. Что мне не хватает?
library(tictoc)
library(promises)
library(purrr)
slow_fun <- function(x){
Sys.sleep(1)
print(paste("Test:", x))
}
promise_fun <- function(x){
future_promise(
slow_fun(x)
)
}
my_nums <- 1:5
{
tic("Sequential run")
my_nums %>% map(slow_fun)
toc()
}
# Sequential run: 5.09 sec elapsed
{
tic("Promise run")
my_nums %>% map(promise_fun)
toc()
}
# Promise run: 5.46 sec elapsed <---- was expecting < 1 second
# with print statements occuring after the timer finished
# (they occurred before the timer).