我使用Joblib在我的python脚本中缓存计算成本高昂的函数的结果。函数的输入参数和返回值是numpy数组。缓存适用于我的python脚本的单次运行。现在我想并行生成我的python脚本的多个运行,以便在实验中扫描一些参数。 (在所有运行中,函数的定义保持不变)。
有没有办法在多个并行运行的python脚本之间共享joblib缓存?这样可以节省大量的功能评估,这些功能评估在不同的运行中重复,但不会在一次运行中重复。我无法在Joblib's documentation
中找到这种情况答案 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
,那么可以透明地缓存常用函数调用。