| call_mirai {mirai} | R Documentation |
mirai (Call Value)
Description
call_mirai waits for the ‘mirai’ to resolve if still in
progress, storing the value at $data, and returns the
‘mirai’ object.
call_mirai_ is a variant of call_mirai that allows user
interrupts, suitable for interactive use.
Usage
call_mirai(x)
call_mirai_(x)
Arguments
x |
a ‘mirai’ object, or list of ‘mirai’ objects. |
Details
Both functions accept a list of ‘mirai’ objects, such as that
returned by mirai_map as well as individual ‘mirai’.
They will wait for the asynchronous operation(s) to complete if still in progress (blocking).
x[] may also be used to wait for and return the value of a mirai
x, and is the equivalent of call_mirai_(x)$data.
Value
The passed object (invisibly). For a ‘mirai’, the retrieved
value is stored at $data.
Alternatively
The value of a ‘mirai’ may be accessed at any time at
$data, and if yet to resolve, an ‘unresolved’ logical NA
will be returned instead.
Using unresolved on a ‘mirai’ returns TRUE only if
it has yet to resolve and FALSE otherwise. This is suitable for use in
control flow statements such as while or if.
Errors
If an error occurs in evaluation, the error message is returned as a
character string of class ‘miraiError’ and ‘errorValue’
(the stack trace is available at $stack.trace on the error
object). is_mirai_error may be used to test for this.
If a daemon crashes or terminates unexpectedly during evaluation, an
‘errorValue’ 19 (Connection reset) is returned (when not using
dispatcher or using dispatcher with retry = FALSE). Otherwise,
using dispatcher with retry = TRUE, the mirai will remain
unresolved and is automatically re-tried on the next daemon to connect to
the particular instance. To cancel the task instead, use
saisei(force = TRUE) (see saisei).
is_error_value tests for all error conditions including
‘mirai’ errors, interrupts, and timeouts.
Examples
if (interactive()) {
# Only run examples in interactive R sessions
# using call_mirai()
df1 <- data.frame(a = 1, b = 2)
df2 <- data.frame(a = 3, b = 1)
m <- mirai(as.matrix(rbind(df1, df2)), df1 = df1, df2 = df2, .timeout = 1000)
call_mirai(m)$data
# using unresolved()
m <- mirai(
{
res <- rnorm(n)
res / rev(res)
},
n = 1e6
)
while (unresolved(m)) {
cat("unresolved\n")
Sys.sleep(0.1)
}
str(m$data)
}