Python-log的使用需求实现举例

一、Format类

1.直接实例化

2.可以继承Format添加特殊字符

3.三个参数

(1)fmt:指定消息格式化字符串,如果不指定该参数则默认使用message的原始值

(2)datemt:指定日期格式字符串,如果不指定该参数,则默认使用“%Y-%m-%d %H:%M:%S"

(3)style:Python3.2新增的参数,可取值为”%“,“{”和“¥”,如果不指定默认使用“%”

二、Filter类

1.可以被Handler和Logger使用

2.控制传递过来的信息的具体内容。

三、例子

#现在有一下几个日志记录的需求:

#(1)要求将所有级别的所有日志写入磁盘文件

#(2)all.log文件中记录所有的日志信息,日志格式为:日期和时间-日志级别-日志信息

#(3)error.log文件中单独记录error及以上级别的日志信息,日志格式:日期和时间-日志级别-文件名【:行号】- 日志信息

#(4)要求all.log在每天凌晨进行日志切割

#分析

#(1)要记录所有级别的日志,因此日志器的有效level需要设置为最低级别 --DEBUG

#(2)日志需要被发送到两个不同的目的地,因此需要为日志设置两个handler;另外。两个目的地都是磁盘文件。因此这两个handler都是与fileHander

#(3)all.log要求按照时间进行日志切割,因此它需要logging.handler.TimeRotatingFileHandler;而error.log没有要求日志切割。因此

#(4)两个日志文件的格式不同,因此需要对两个handler分别进行设置格式器

对Python感兴趣或者是正在学习的小伙伴,可以加入我们的Python学习扣qun:784758214,看看前辈们是如何学习的!从基础的python脚本到web开发、爬虫、django、数据挖掘等,零基础到项目实战的资料都有整理。送给每一位python的小伙伴!分享一些学习的方法和需要注意的小细节,教你如何实现边学习边用Python赚钱的学习方式。点击加入我们的 python学习者聚集地

import logger

import logging.handlers

import datetime

#定义Logger

logger = logging.getLogger("mylogger")

logging.setLevel(logging.DEBUG)

 

rf_handler = logging.handlers.TimedRotatingFileHandler("all.log",when="midnight",interval=1,backupCount=7,atTime=None)

rf_handler.setFormatter(logging.Formatter("%(asctime)s-%(levelname)s-%(message)s"))

 

f_handler = logging.FileHandler("error.log")

f_handler = setLevel(logging.ERROR)

f_handler.setFormat(logging.Formatter("%(asctime)s-%(levelname)s-%(filename)s[:%(lineno)d-%(message)s)")

 

#把相应的处理器组装到logger上

logger.addHandler(rf_handler)

logger.addHandler(f_handler)

 

logger.debug("debug message")

logger.info("info message")

logger.warning("warning message")

logger.error("error message")

logger.critical("critical message")

<think>好的,我现在需要帮助用户解决如何正确设置CUDA_VISIBLE_DEVICES并使用ManyDepth训练KITTI数据集的问题。首先,我应该回忆一下用户提供的引用内容,看看有没有相关的信息可以参考。 用户提供的引用[1]和[2]都提到了在训练脚本中使用CUDA_VISIBLE_DEVICES来指定显卡。比如引用[1]中的命令是`CUDA_VISIBLE_DEVICES=1 python tools/train.py ...`,而引用[2]中多卡训练用了`CUDA_VISIBLE_DEVICES=5,6,7 python -m torch.distributed.launch ...`。这说明用户可能在使用类似PyTorch框架的情况下,需要设置环境变量来选择GPU设备。 接下来,用户的问题是关于ManyDepth训练脚本的配置,特别是使用KITTI数据集。我需要考虑ManyDepth的具体情况,以及KITTI数据集的准备是否和引用中的OpenPCDet或MMDetection类似。比如引用[3]提到需要调整编号对应数据集,用户可能需要检查数据集的路径和配置文件是否正确。 另外,用户可能已经按照引用[4]中的环境配置好了miniconda、CUDA 11.7、Python 3.8.0和PyTorch,但需要确认CUDA版本与ManyDepth的兼容性。如果ManyDepth要求不同的CUDA版本,可能需要调整环境设置。 现在,我需要整理步骤:首先设置CUDA_VISIBLE_DEVICES,然后运行训练脚本,同时确保数据路径正确。可能还需要多卡训练的情况,用户提到使用ManyDepth,可能需要参考其官方文档是否有分布式训练的选项。引用[2]中的多卡命令使用了`torch.distributed.launch`,但ManyDepth是否有类似的启动方式需要确认。 另外,用户可能需要知道如何验证GPU是否被正确识别,比如在训练脚本中打印可用设备,或者使用nvidia-smi查看GPU使用情况。引用[1]中提到的单卡和多卡训练的区别,用户需要根据自己拥有的GPU数量来选择命令。 最后,用户的问题可能还涉及数据集的准备,引用[3]提到需要创建training和testing文件夹,并调整编号,这可能和KITTI数据集在ManyDepth中的配置有关,需要检查ManyDepth的文档或配置文件中的数据集路径设置是否正确。 总结一下,我需要分步骤说明如何设置CUDA_VISIBLE_DEVICES,运行训练脚本,处理单卡和多卡的情况,验证设置是否正确,并确保数据集路径配置正确。同时,要提醒用户注意CUDA版本和依赖库的兼容性,参考用户提供的引用中的类似操作来举例说明。</think>### 分步解答 #### 1. **设置 CUDA_VISIBLE_DEVICES** CUDA_VISIBLE_DEVICES 是用于指定训练时可见的 GPU 设备的环境变量。 - **单卡训练**:直接指定 GPU 编号(例如使用1号卡) ```bash CUDA_VISIBLE_DEVICES=1 python train.py --config_path manydepth/configs/kitti.yaml ``` - **多卡训练**:通过逗号分隔多个 GPU 编号(例如使用0号和1号卡) ```bash CUDA_VISIBLE_DEVICES=0,1 python -m torch.distributed.launch --nproc_per_node=2 train.py --config_path manydepth/configs/kitti.yaml ``` #### 2. **验证 GPU 可见性** 在训练脚本中添加以下代码片段,确保 GPU 被正确识别: ```python import torch print(f"可用 GPU 设备: {torch.cuda.device_count()}") print(f"当前 GPU 索引: {torch.cuda.current_device()}") ``` 运行后若输出与设置一致,则配置成功[^1][^2]。 #### 3. **KITTI 数据集配置** 确保数据集路径在配置文件中正确指向 KITTI 数据: - 修改 `manydepth/configs/kitti.yaml` 中的 `data_path` 字段,例如: ```yaml data_path: "/path/to/kitti_dataset/" ``` - KITTI 数据集需包含 `training` 和 `testing` 文件夹,并按标准格式组织图像和标注文件[^3]。 #### 4. **依赖项兼容性检查** - 确认 CUDA 版本与 PyTorch 版本匹配(例如 CUDA 11.3 对应 PyTorch 1.12.1) 使用 `nvcc --version` 查看 CUDA 版本,`conda list pytorch` 查看 PyTorch 版本[^4]。 - 安装 ManyDepth 所需依赖: ```bash pip install -r requirements.txt ``` #### 5. **启动训练** 完整命令示例(单卡): ```bash CUDA_VISIBLE_DEVICES=1 python train.py --config_path manydepth/configs/kitti.yaml --log_dir ./logs ``` 训练日志和模型权重会保存在 `--log_dir` 指定目录中。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值