1

これが私のコードです:

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

4

1 に答える 1

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関数は 内に存在しないため、boilerplate2 回呼び出されています。

エラーは、最初に呼び出されたときに実行されていないプロセスから発生しておりParallel、戻りますNone

詳細については、「Python のボイラープレート コード」を参照してください。boilerplates

于 2015-09-01T16:09:00.917 に答える