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.')

 


 

完。

posted @ 2022-03-07 10:13  Tiac  阅读(2480)  评论(0编辑  收藏  举报