多个进程共享一个Joblib缓存

时间:2014-07-30 09:45:24

标签: python caching numpy joblib

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

有没有办法在多个并行运行的python脚本之间共享joblib缓存?这样可以节省大量的功能评估,这些功能评估在不同的运行中重复,但不会在一次运行中重复。我无法在Joblib's documentation

中找到这种情况

1 个答案:

答案 0 :(得分:6)

指定一个公共的,固定的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,那么可以透明地缓存常用函数调用。