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

时间:2016-07-19 17:58:34

标签: python multiprocessing 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))

1 个答案:

答案 0 :(得分:2)

尝试使用不同的名称作为装饰函数,例如unbindModel()而不是装饰器。另请参阅https://github.com/joblib/joblib/issues/226