有没有办法在环境中设置options
?像
tmp_env = new.env()
within(tmp_env, options(mc.core = 16))
with(tmp_env, {
# run parallel code here
})
我想明确地使用options(mc.core = 16)
和options(mc.core = 1)
之间切换,并且不希望意外地引发并行计算。
答案 0 :(得分:2)
使用函数或其他闭包(例如local()
)来设置选项,并使用on.exit()
保证退出时恢复
fun = function() {
old.opt = options(mc.cores=12)
on.exit(options(old.opt))
## do work
}
你可以喜欢(基于with.default
)
withp = function(expr, cores=4) {
old.opt = options(mc.cores=cores)
on.exit(options(old.opt))
eval(substitute(expr), enclos=parent.frame())
}
并使用
withp({
message("hello")
res <- mclapply(1:20, function(i) Sys.getpid())
table(unlist(res))
}, cores=3)