Nothing
source("incl/start.R")
options(future.debug = FALSE)
message("*** Early signaling of conditions ...")
message("*** Early signaling of conditions with sequential futures ...")
plan(sequential)
f <- future({ stop("bang!") })
r <- resolved(f)
stopifnot(r)
v <- tryCatch(value(f), error = identity)
stopifnot(inherits(v, "error"))
message("- with lazy evaluation ...")
f <- future({ stop("bang!") }, lazy = TRUE)
r <- resolved(f)
stopifnot(r)
v <- tryCatch(value(f), error = identity)
stopifnot(inherits(v, "error"))
plan(sequential, earlySignal = TRUE)
f <- tryCatch(future({ stop("bang!") }), error = identity)
stopifnot(inherits(f, "error"))
message("- with lazy evaluation ...")
## Errors
f <- future({ stop("bang!") }, lazy = TRUE)
r <- tryCatch(resolved(f), error = identity)
stopifnot(inherits(r, "error"))
v <- tryCatch(value(f), error = identity)
stopifnot(inherits(v, "error"))
## Warnings
f <- future({ warning("careful!") }, lazy = TRUE)
res <- tryCatch({
r <- resolved(f)
}, condition = function(w) w)
str(res)
stopifnot(inherits(res, "warning"))
## Messages
f <- future({ message("hey!") }, lazy = TRUE)
res <- tryCatch({
r <- resolved(f)
}, condition = function(w) w)
stopifnot(inherits(res, "message"))
## Condition
f <- future({ signalCondition(simpleCondition("hmm")) }, lazy = TRUE)
res <- tryCatch({
r <- resolved(f)
}, condition = function(w) w)
stopifnot(inherits(res, "condition"))
message("*** Early signaling of conditions with sequential futures ... DONE")
message("Number of available cores: ", availableCores())
message("*** Early signaling of conditions with multisession futures ...")
plan(multisession)
f <- future({ stop("bang!") })
Sys.sleep(1.0)
r <- resolved(f)
stopifnot(r)
v <- tryCatch(value(f), error = identity)
stopifnot(inherits(v, "error"))
if (availableCores() > 1L) {
plan(multisession, earlySignal = TRUE)
f <- future({ stop("bang!") })
Sys.sleep(1.0)
print(f)
r <- tryCatch(resolved(f), error = identity)
stopifnot(inherits(r, "error") || inherits(f, "SequentialFuture"))
v <- tryCatch(value(f), error = identity)
stopifnot(inherits(v, "error"))
} else {
message("- Skipping earlySignal = TRUE with 'multisession' because availableCores() == 1")
}
message("*** Early signaling of conditions with multisession futures ... DONE")
if (supportsMulticore()) {
message("*** Early signaling of conditions with multicore futures ...")
plan(multicore)
f <- future({ stop("bang!") })
Sys.sleep(1.0)
r <- resolved(f)
stopifnot(r)
v <- tryCatch(value(f), error = identity)
stopifnot(inherits(v, "error"))
if (availableCores() > 1L) {
plan(multicore, earlySignal = TRUE)
f <- future({ stop("bang!") })
Sys.sleep(1.0)
print(f)
r <- tryCatch(resolved(f), error = identity)
stopifnot(inherits(r, "error") || inherits(f, "SequentialFuture"))
v <- tryCatch(value(f), error = identity)
stopifnot(inherits(v, "error"))
## Errors
f <- future({ stop("bang!") }, earlySignal = TRUE)
Sys.sleep(1.0)
r <- tryCatch(resolved(f), error = identity)
stopifnot(inherits(r, "error") || inherits(f, "SequentialFuture"))
v <- tryCatch(value(f), error = identity)
stopifnot(inherits(v, "error"))
} else {
message("- Skipping earlySignal = TRUE with 'multicore' because availableCores() == 1")
}
## Warnings
f <- future({ warning("careful!") }, earlySignal = TRUE)
Sys.sleep(1.0)
res <- tryCatch({ r <- resolved(f) }, condition = function(w) w)
#stopifnot(inherits(res, "warning"))
## Messages
f <- future({ message("hey!") }, earlySignal = TRUE)
Sys.sleep(1.0)
res <- tryCatch({ r <- resolved(f) }, condition = function(w) w)
#stopifnot(inherits(res, "message"))
## Condition
f <- future({ signalCondition(simpleCondition("hmm")) }, earlySignal = TRUE)
Sys.sleep(1.0)
res <- tryCatch({ r <- resolved(f) }, condition = function(w) w)
#stopifnot(inherits(res, "condition"))
message("*** Early signaling of conditions with multicore futures ... DONE")
}
message("*** Early signaling of conditions ... DONE")
source("incl/end.R")
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.