WindowsでPythonで並列処理を実行しています。ここに私のコードは次のとおりです。python joblib Windowsでの並列処理でも機能しません "if __name__ == '__main__':"が追加されました
from joblib import Parallel, delayed
def f(x):
return sqrt(x)
if __name__ == '__main__':
a = Parallel(n_jobs=2)(delayed(f)(i) for i in range(10))
ここでエラーメッセージがあります:
Process PoolWorker-2:
Process PoolWorker-1:
Traceback (most recent call last):
File "C:\Users\yoyo__000.BIGBLACK\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.5.4.3105.win-x86_64\lib\multiprocessing\process.py", line 258, in _bootstrap
self.run()
File "C:\Users\yoyo__000.BIGBLACK\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.5.4.3105.win-x86_64\lib\multiprocessing\process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\yoyo__000.BIGBLACK\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.5.4.3105.win-x86_64\lib\multiprocessing\pool.py", line 102, in worker
task = get()
File "C:\Users\yoyo__000.BIGBLACK\AppData\Local\Enthought\Canopy\User\lib\site-packages\joblib\pool.py", line 363, in get
return recv()
AttributeError: 'module' object has no attribute 'f'
return文 'def f(x):return sqrt(x)'を追加したいと思うかもしれません。 – jotrocken
それは同じです。また私はキャノピーが異なる処理をするので、 'sqrt(x)'の後に 'sys.stdout.flush'を追加しようとしました。どちらも動作しません。 – YKosinska
いいえ、そうではありません。 'return'を指定しなければ、戻り値は' None'です。 – jotrocken