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

 


 

完。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM