python 多进程 multiprocessing 使用 logging
一、问题背景
在 python 里使用多进程(multiprocessing )模块时,进程里使用 logging 不能输出日志
二、解决办法
在 multiprocessing 的 target 函数(或类)之外定义一个 logger 即可,可全局使用
import time import logging import multiprocessing logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s') logger = logging.getLogger() def worker(name): logger.info('%s: running...' % name) if __name__ == '__main__': multiprocessing.freeze_support() with multiprocessing.Manager() as mg: logger.info('start...') processes = [] for i in range(3): name = 'worker_%d' % i p = multiprocessing.Process(target=worker, args=(name,)) processes.append(p) p.start() time.sleep(1) try: for p in processes: p.join() except KeyboardInterrupt: os._exit(0) logger.info('Finished.')
完。