Python初心者の者です。
Pythonで並列処理を実装したく、調べてみるとjoblibという外部モジュールで簡単に書けるということでした。
ひとまずネットの記事を参考にしてコーディングしてみました。
python
1# -*- coding: utf-8 -*- 2from sklearn.externals.joblib import Parallel, delayed 3from time import time 4 5def process(n): 6 return sum([i*n for i in range(10000)]) 7 8start = time() 9 10r = Parallel(n_jobs=-1)( [delayed(process)(i) for i in range(10000)] ) 11print(sum(r)) 12 13print('{0} sec'.format(time() - start))
すると
error
15Process Process-6: 2Traceback (most recent call last): 3 File "C:\Python27\lib\multiprocessing\process.py", line 258, in _bootstrap 4 0Process Process-1: 5Traceback (most recent call last): 6 File "C:\Python27\lib\multiprocessing\process.py", line 258, in _bootstrap 7 self.run() 8 File "C:\Python27\lib\multiprocessing\process.py", line 114, in run 9 self._target(*self._args, **self._kwargs) 10 File "c:\python\test.py", line 6, in f 11 print number, os.getppid(),os.getpid() 12AttributeError: 'module' object has no attribute 'getppid' 13 self.run()
このようなエラーメッセージが延々と出てきてしまいました。
そこで
python
1from sklearn.externals.joblib import Parallel, delayed 2from time import time 3 4try: 5 def process(n): 6 return sum([i*n for i in range(10000)]) 7 8 start = time() 9 10 r = Parallel(n_jobs=-1)( [delayed(process)(i) for i in range(10000)] ) 11 print(sum(r)) 12 13 print('{0} sec'.format(time() - start)) 14except: 15 print('error') 16
このようにtryとexceptを追加して実行してみると
result
1error 2error 3error 4error 52499500025000000 65.7009999752 sec
結果はこのようになりました。
自分はerrorが一つだけ表示されるものだと思っていたのでなぜこのようになったのか教えていただきたいです。
ちなみに五行目の計算結果は正しいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/17 04:12