这是我的代码:
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
函数获得结果?
答案 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