首页 > 解决方案 > 使用 R 函数初始化的缓存中的可用内存量:`memoise::memoise()`

问题描述

我反复调用一个这样初始化的记忆函数:

library(memoise)
memoised_func <- memoise::memoise(func)

我知道我可以memoised_func使用cache参数(https://www.rdocumentation.org/packages/memoise/versions/2.0.0/topics/memoise)设置分配给缓存的大小。但是有没有办法在任何一个时间点查看缓存中有多少可用内存?我问是因为我想知道它是否已满,因此我的程序可以通过增加缓存的大小来加速。

(我会继续运行R 4.0.2以防Ubuntu 20.10万一)

标签: rcachingmemoizationmemoise

解决方案


我找到了解决此问题的解决方法。

默认情况下memoise用于cachem::cache_mem创建缓存。或者,我可以使用cachem::cache_disk它来指定文件系统上缓存的位置。然后很容易查看缓存中有多少可用内存:

library(memoise)
library(cachem)

#assigned in global scope
cache.dir <<- tempdir() 
cache.size <<- 2048 * 1024^2

memoised_func <- memoise::memoise(func, 
                                cache = cachem::cache_disk(
                                                dir = cache.dir,
                                                max_size = cache.size))

cache.percent.full <- function() {
    used.mem <- file.size(dir(cache.dir, full.names = TRUE)) %>% 
                    sum() 
    return(used.mem/cache.size * 100)
}

推荐阅读