import os import json import csv import subprocess import psutil def load_model(): pass def run(): # WSL内で取得するとホストの値とは異なるので使い物にならない try: # load average per cpu count la = round((psutil.getloadavg()[0] / psutil.cpu_count()) * 100) # cpu cpu = round(psutil.cpu_percent(percpu=False)) # ram ram = psutil.virtual_memory() rama = round(ram.available) ramt = round(ram.total) ramp = 100 - ram.percent ramg = round(ram.available / 1073741824) # vram cmd = 'nvidia-smi --query-gpu=utilization.gpu,memory.used,memory.total --format=csv,noheader,nounits' csv = subprocess.run(cmd, shell=True, capture_output=True, text=True).stdout r = csv.split(',') gpu = round(float(r[0])) vrama = round(float(r[1])) vramt = round(float(r[2])) vramp = round(vrama / vramt * 100) vramg = round(float(r[1]) / 1024) # network # 1秒ぶんだけ取りたかった #net = psutil.net_io_counters() #ni = round((float(net.bytes_recv) / 1048576) * 100) #no = round((float(net.bytes_sent) / 1048576) * 100) res = { 'la': la, 'cpu': cpu, 'ram': ramg, 'gpu': gpu, 'vram': vramg, } return res except Exception as e: return {}