import os, sys, time, csv, datetime import psutil from pynvml import * import pynvml csvdir = 'F:' def run(): nowtime_csv = time.strftime("%Y%m%d%H%M%S", time.localtime(time.time())) csvpath = csvdir + 'pc_resource_' + nowtime_csv + '.csv' csv_head = 0 print('收集电脑使用资源,勿关!') while 1: memory = get_memory() cpu = get_cpu() gpu = get_gpu() time.sleep(0.5) # 写入csv with open(csvpath, 'a', newline='') as csvfile: writer = csv.writer(csvfile) nowtime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())) if csv_head == 0: # csv文件写入表头 writer.writerow(["cpu使用率", "总内存", "已使用内存", "空闲内存","总显存", "已使用显存", "空闲显存","当前时间"]) csv_head = 1 writer.writerow([cpu, memory[0],memory[1],memory[2],gpu[0],gpu[1],gpu[2],nowtime]) csvfile.close() def get_timer(): nowtime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())) timearray = time.strptime(nowtime, "%Y-%m-%d %H:%M:%S") timestamp = int(time.mktime(timearray)) return timestamp def get_parsec(): starttime = datetime.datetime.now() time.sleep(1) endtime = datetime.datetime.now() parsec = (endtime - starttime).seconds def get_memory(): mem = psutil.virtual_memory() # 系统总内存 zj = float(mem.total) / 1024 / 1024 / 1024 # 系统已经使用内存 ysy = float(mem.used) / 1024 / 1024 / 1024 # 系统空闲内存 kx = float(mem.free) / 1024 / 1024 / 1024 # print('系统总内存:%dGB' % zj) # print('系统已经使用内存:%dGB' % ysy) # print('系统空闲内存:%dGB' % kx) memory = (round(zj,2),round(ysy,2),round(kx,2)) return memory def get_cpu(): cpu = psutil.cpu_percent(interval=0,percpu=False) # print('cpu使用率:',cpu) return cpu def get_gpu(): pynvml.nvmlInit() #初始化 handle = pynvml.nvmlDeviceGetHandleByIndex(0) #0是GPU id meminf = pynvml.nvmlDeviceGetMemoryInfo(handle) print("Driver Version: ",nvmlSystemGetDriverVersion()) #显示驱动信息 total = meminf.total/1024/1024 used = meminf.used/1024/1024 free = meminf.free/1024/1024 print("总显存:",total) #显卡总的显存大小 print("已使用显存:",used) #这里是字节bytes,所以要想得到以兆M为单位就需要除以1024**2 print("未使用显存:",free) #显卡剩余显存大小 print("显存数量:",pynvml.nvmlDeviceGetCount()) #显示有几块GPU gpu = (round(total,2),round(used,2),round(free,2)) return gpu class Logger(object): def __init__(self, filename="files/algorithm_test.log"): self.terminal = sys.stdout self.log = open(filename, "a") def write(self, message): self.terminal.write(message) self.log.write(message) def flush(self): pass sys.stdout = Logger('files/algorithm_test.log') if __name__ == "__main__": Logger() run() #memory = get_memory() # get_cpu() # get_gpu()