Python-在多进程中使用logger对象

在Python多进程中,使用logger记录进程信息时,由于不同进程片段可能共享同一个logger对象,导致handler重复添加,造成输出异常。例如,任务task 1至task 5中,后续任务会因重复添加handler而多次输出。解决办法是在每个进程执行结束时,及时从logger中移除handler,确保正常输出。
摘要由CSDN通过智能技术生成

Python-多进程中使用logger对象

多进程中使用logger对象,为了记录进程执行时的相关信息,肯定要在进程片段中创建logger对象。

示例代码如下:

#!/usr/bin/bash
# -*-coding: utf-8

import logging
import os
from multiprocessing import Pool, cpu_count


def parallel_run(count):
    logger = logging.getLogger("test")
    logger.setLevel(logging.DEBUG)
    fmt = logging.Formatter("%(name)s %(levelname)s %(asctime)s %(message)s")
    console = logging.StreamHandler()
    console.setLevel(logging.INFO)
    console.setFormatter(fmt)

    file_handler = logging.FileHandler('log_path_{}.log'.format(count))
    file_handler.setLevel(logging.DEBUG)
    file_handler.setFormatter(fmt)

    logger.addHandler(file_handler)
    logger.addHandler(console)
    logger.debug("PID[%s]: Hello world! task: %d" % (os.getpid(), count))
    logger.info("PID[%s]: Hello world! task: %d " % (os.getpid(), count))


if __name__ == &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值