if(!is_on_cran()) {
library(raveio)
# ---- Basic example ----------------------------
lapply_async(1:16, function(x) {
# function that takes long to fun
Sys.sleep(1)
x
})
# With callback
lapply_async(1:16, function(x){
Sys.sleep(1)
x + 1
}, callback = function(x) {
sprintf("Calculating|%s", x)
})
# With ncores
pids <- lapply_async(1:16, function(x){
Sys.sleep(0.5)
Sys.getpid()
}, ncores = 2)
# Unique number of PIDs (cores)
unique(unlist(pids))
# ---- With scheduler ----------------------------
# Scheduler pre-initialize parallel workers and temporary
# switches parallel context. The workers ramp-up
# time can be saved by reusing the workers.
#
with_future_parallel({
# lapply_async block 1
pids <- lapply_async(1:16, function(x){
Sys.sleep(1)
Sys.getpid()
}, callback = function(x) {
sprintf("lapply_async without ncores|%s", x)
})
print(unique(unlist(pids)))
# lapply_async block 2
pids <- lapply_async(1:16, function(x){
Sys.sleep(1)
Sys.getpid()
}, callback = function(x) {
sprintf("lapply_async with ncores|%s", x)
}, ncores = 4)
print(unique(unlist(pids)))
})
}
Run the code above in your browser using DataLab