Python joblib - 在Windows机器上获得并行计算的结果

时间:2015-09-01 16:01:14

标签: python parallel-processing joblib

这是我的代码:

from math import sqrt
from joblib import Parallel, delayed
import multiprocessing

def parallel_calc():
    if __name__ == '__main__':
        result = Parallel(n_jobs=2)(delayed(sqrt)(i ** 2) for i in range(10))
        return result

result = parallel_calc()
print(result[-1])

它会生成错误消息:print(result[-1]) TypeError: 'NoneType' object is not subscriptable。此外,它不会终止。

由于我在Window 7上,我必须使用此检查if __name__ == '__main__':,但如何从parallel_calc函数获得结果?

1 个答案:

答案 0 :(得分:2)

if __name__...boilerplate移到您的功能范围之外。

if __name__ == '__main__':
    def parallel_calc():
        result = Parallel(n_jobs=2)(delayed(sqrt)(i ** 2) for i in range(10))
        return result

    result = parallel_calc()
    print(result[-1])

由于parallel_calc函数不在boilerplate内,因此它被调用两次。

错误来自Parallel进程在第一次调用时未执行,返回None

有关boilerplates

的更多信息,请查看"Boilerplate code in Python"