起きている問題
Python 3.5 で multiprocessing を使い並列処理を行うスクリプトを書いています。処理自体はうまくいっているのですが、logging でログを記録した際、同じメッセージが複数回出力されてしまいます。
ダブって出力されてしまうメカニズム・回避方法を教えてください。
該当のソースコード
python
1import multiprocessing 2import logging 3import time 4import os 5 6class Hoge: 7 def __init__(self): 8 self.logger = logging.getLogger('HogeClass') 9 self.logger.addHandler(logging.StreamHandler()) 10 self.logger.setLevel(logging.DEBUG) 11 12 def child(self, num): 13 self.logger.info('I am {}, pid {}'.format(num, os.getpid())) 14 time.sleep(1) 15 16 17if __name__ == '__main__': 18 def mp_hoge(num): 19 h = Hoge() 20 h.child(num) 21 22 multiprocessing.Pool(2).map(mp_hoge, range(10))
実行時ログ
sh
1$ ./mp_test.py 2I am 0, pid 13604 3I am 2, pid 13605 4I am 3, pid 13605 5I am 3, pid 13605 6I am 1, pid 13604 7I am 1, pid 13604 8I am 4, pid 13605 9I am 6, pid 13604 10I am 6, pid 13604 11I am 6, pid 13604 12I am 4, pid 13605 13I am 4, pid 13605 14I am 7, pid 13604 15I am 7, pid 13604 16I am 7, pid 13604 17I am 7, pid 13604 18I am 5, pid 13605 19I am 5, pid 13605 20I am 5, pid 13605 21I am 5, pid 13605 22I am 8, pid 13605 23I am 8, pid 13605 24I am 8, pid 13605 25I am 8, pid 13605 26I am 8, pid 13605 27I am 9, pid 13605 28I am 9, pid 13605 29I am 9, pid 13605 30I am 9, pid 13605 31I am 9, pid 13605 32I am 9, pid 13605

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/16 11:23