9

我正在使用 Joblib 在我的 python 脚本中缓存计算量大的函数的结果。函数的输入参数和返回值是 numpy 数组。缓存适用于我的 python 脚本的单次运行。现在我想并行生成我的 python 脚本的多个运行,以便在实验中扫描一些参数。(函数的定义在所有运行中保持相同)。

有没有办法在并行运行的多个 python 脚本之间共享 joblib 缓存?这将节省大量在不同运行中重复但不会在单次运行中重复的函数评估。我在Joblib 的文档中找不到这是否可行

4

1 回答 1

12

指定一个常用的、固定cachedir的和装饰你想要缓存的函数

from joblib import Memory
mem = Memory(cachedir=cachedir)

@mem.cache
def f(arguments):
    """do things"""
    pass

或者干脆

def g(arguments):
   pass

cached_g = mem.cache(g)

然后,即使您跨进程、跨机器工作,如果您的程序的所有实例都可以访问cachedir,那么公共函数调用可以透明地缓存在那里。

于 2014-07-31T07:27:15.393 回答