我正在预计算结果,并使用回忆录包的回忆录函数缓存它们。不幸的是,如果我试图通过与parallel::mclapply并行运行来加快计算速度,那么回忆录就不会发生。
> f <- memoise::memoise(function (a, b) a)
> memoise::has_cache(f)("foo", "bar")
[1] FALSE
> parallel::mclapply(c("bar", "baz"), f, a = "foo")
[[1]]
[1] "foo"
[[2]]
[1] "foo"
> memoise::has_cache(f)("foo", "bar")
[1] FALSE
> sapply(c("bar", "baz"), f, a = "foo")
bar baz
"foo" "foo"
> memoise::has_cache(f)("foo", "bar")
[1] TRUE我想回忆录的功能会被复制然后丢弃在每个叉子里.是否有使用其他函数或包的简单替代方案?
发布于 2018-01-04 20:08:04
把我的评论变成一个回答:
R.cache包(我是作者)回忆录为文件,这意味着缓存跨R会话和并行R进程工作。显然,与内存缓存相比,文件缓存增加了一些开销。
https://stackoverflow.com/questions/47973314
复制相似问题