1. 얻고 싶은 로그 형태
Timestamp | function name[=phase level] | { cpu, mem, gpu, start_timestamp }
self.token = ''
def log(self):
check_metrics(self.token + " | " + message)
https://florian-dahlitz.de/articles/logging-made-easy-with-loguru
https://loguru.readthedocs.io/en/stable/api/logger.html
2. 로그 수집 주기
특정 function 실행의 시작~종료기간의 로그를 수집하고 싶다.
function이 실행되면 수집을 시작해서 1초 단위로 수집하다가 종료되면 수집을 중단하고 싶다.
=========
방법 못 찾음.. 대안.. 함수의 중요 지점에 log를 찍는다.
from loguru import logger
import nvidia_smi, psutil
from functools import wraps
logger.add(f'test-20220706.log', retention="1 days")
def _check_total_metrics(func_name):
metric_dict = {}
metric_dict['NAME']=func_name
def _check_gpu_index():
nvidia_smi.nvmlInit()
handle = nvidia_smi.nvmlDeviceGetHandleByIndex(0)
info = nvidia_smi.nvmlDeviceGetMemoryInfo(handle)
nvidia_smi.nvmlShutdown()
return round(100*info.used/info.total,2)
metric_dict['MEM']=psutil.virtual_memory().percent
metric_dict['CPU']=psutil.cpu_percent()
metric_dict['GPU']=_check_gpu_index()
logger.info(metric_dict)
class Toy():
def log(self, message, level=3):
_check_total_metrics(message)
print(self.__class__.__name__, message)
##result
##2022-07-06 21:38:00.420 | INFO | worker.base_worker:_check_total_metrics:42
##- {'NAME': 'Time: Total 0:00:14.330254 Init 0:00:06.081697 Core 0:00:06.702731 Fin 0:00:01.545826', 'MEM': 63.1, 'CPU': 4.5, 'GPU': 95.67}
3. 로그 파일 삭제
'Developing.. > Python' 카테고리의 다른 글
로그남기는 법2 : 표준출력+로그파일 생성하기 (0) | 2022.07.27 |
---|---|
모델성능비교 Tip : warning제거 하는 법 (0) | 2022.07.18 |
python --config ..설정값 관리하기! (0) | 2022.06.09 |
Concurrency in python +GIL (0) | 2021.02.09 |
Socket Programming w/ Multithreading (0) | 2021.02.09 |