如何使用 joblib 并行化缓存函数

how to parallelize cached functions using joblib

我想并行化使用 joblib.Memory 缓存的函数 但是我收到以下错误:

TypeError: can't pickle function objects

代码如下:

import joblib

mem = joblib.Memory(cachedir='/tmp')


@mem.cache
def foo(x):
    # do some complicated task
    return x + 1

if __name__ == '__main__':
    f = joblib.delayed(foo)
    res = joblib.Parallel(n_jobs=-2)(f(x) for x in range(100))

尝试为装饰函数使用不同的名称,例如 foo_cached = mem.cache(foo) 而不是装饰器。另见 https://github.com/joblib/joblib/issues/226