You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批量并行调用Python函数时多日志文件创建不全问题

多进程并行调用日志文件创建不全的解决方案

问题原因

  • logging.basicConfig是全局配置方法,多进程并行运行时,多个进程同时修改logging的全局状态会引发资源竞争,导致部分进程的日志配置无法生效,日志文件创建失败。
  • 调用logging.shutdown()会关闭所有全局日志处理器,后续进程复用logging资源时可能出现异常。

修正代码

使用独立的Logger实例替代全局logging模块,每个进程维护自己的日志处理器:

import logging

def processDocument(inputfilename):
    # 创建唯一命名的Logger实例,避免全局冲突
    logger = logging.getLogger(inputfilename)
    logger.setLevel(logging.INFO)
    
    # 避免同一进程内重复添加处理器
    if not logger.handlers:
        logfile = inputfilename + '.log'
        # 创建文件处理器并配置格式
        file_handler = logging.FileHandler(logfile, encoding='utf-8')
        formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
        file_handler.setFormatter(formatter)
        logger.addHandler(file_handler)
    
    # 执行业务操作
    logger.info(f"process completed for file: {inputfilename}")
    
    # 清理当前进程的日志资源
    for handler in logger.handlers[:]:
        handler.close()
        logger.removeHandler(handler)

关键注意事项

  • 用**唯一标识(如输入文件名)**作为Logger名称,确保每个进程的Logger实例独立,互不干扰。
  • 检查Logger是否已有处理器,避免同一进程内多次调用函数时重复写入日志。
  • 显式关闭并移除处理器,及时释放文件资源,减少进程间的文件锁竞争。

内容的提问来源于stack exchange,提问作者Sweety

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 19:09:28