【问题标题】:Python joblib - get result of parallel calculations on Windows machinePython joblib - 在 Windows 机器上获取并行计算的结果
【发布时间】:2015-09-01 16:01:13
【问题描述】:

这是我的代码:

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 函数中获取结果?

【问题讨论】:

    标签: python parallel-processing joblib


    【解决方案1】:

    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

    查看"Boilerplate code in Python" 了解有关boilerplates 的更多信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      • 2011-01-28
      • 1970-01-01
      • 2022-06-24
      • 1970-01-01
      相关资源
      最近更新 更多