
Bake Parallel Jobs in Background with bakerrr
Source:vignettes/simple_example.Rmd
simple_example.Rmd
Overview
The bakerrr S7 class enables efficient background and parallel job orchestration in R, making it easy to apply a function to multiple sets of arguments using configurable daemons. This vignette demonstrates usage with sample inputs and inspects job status and results.
Job Architecture
- Daemons: Background R processes that execute jobs in parallel
- Arguments List: Each element contains named arguments for the target function
- Results Collection: Automatic aggregation with error capture and reporting
Setup
Define a simple function and generate a list of argument sets, introducing a mix of numeric and non-numeric (error-producing) cases.
fun <- function(x, y) {
Sys.sleep(2)
x + y
}
# Note how each list item is a set of arguments for the function above.
args_list <- list(
list(x = ceiling(rnorm(1) * 10), y = ceiling(rnorm(1) * 10)),
list(x = "p", y = ceiling(rnorm(1) * 10)), # Intentional type error
list(x = ceiling(rnorm(1) * 10), y = ceiling(rnorm(1) * 10)),
# Add more sets as needed
list(x = ceiling(rnorm(1) * 10), y = ceiling(rnorm(1) * 10)),
list(x = ceiling(rnorm(1) * 10), y = ceiling(rnorm(1) * 10)),
list(x = ceiling(rnorm(1) * 10), y = ceiling(rnorm(1) * 10)),
list(x = ceiling(rnorm(1) * 10), y = ceiling(rnorm(1) * 10)),
list(x = ceiling(rnorm(1) * 10), y = ceiling(rnorm(1) * 10)),
list(x = ceiling(rnorm(1) * 10), y = ceiling(rnorm(1) * 10)),
list(x = ceiling(rnorm(1) * 10), y = ceiling(rnorm(1) * 10))
)
Creating and Running Jobs
Instantiate a bakerrr object and process jobs in parallel with configurable daemon count.
Inspecting Status and Results
Print job summary and view results. Note that jobs triggering errors report the error messages as designed.
print(new_stirr)
new_stirr@results
#> [[1]]
#> [1] -11
#>
#> [[2]]
#> Error in purrr::in_parallel: non-numeric argument to binary operator
#>
#> [[3]]
#> [1] 7
#>
#> [[4]]
#> [1] -6
#>
#> [[5]]
#> [1] -4
#>
#> [[6]]
#> [1] -7
#>
#> [[7]]
#> [1] 28
#>
#> [[8]]
#> [1] -10
#>
#> [[9]]
#> [1] -23
#>
#> [[10]]
#> [1] 6
Notes
- Use n_daemons to control parallel worker count based on available cores.
- Error handling is built in; results will include error messages for failed jobs.
- You can pass additional background job options via bg_args.
- For more details, see function-level documentation or explore extending with additional job handlers and reporting tools.