Switcher / Status.py
crash10155's picture
Upload 166 files
289fb74 verified
import psutil
import time
import GPUtil
from rich.live import Live
from rich.progress import Progress, BarColumn, ProgressColumn
from rich.console import Console
from rich.text import Text
class PercentageColumn(ProgressColumn):
def render(self, task):
return Text(f"{task.percentage:>5.1f}%")
def main():
console = Console()
progress = Progress(
"[progress.description]{task.description}",
BarColumn(bar_width=None),
PercentageColumn(),
)
# Create tasks for CPU and GPUs
cpu_task = progress.add_task("CPU Utilization", total=100)
gpu_tasks = []
gpus = GPUtil.getGPUs()
for gpu in gpus:
gpu_task = progress.add_task(f"GPU {gpu.id} Utilization", total=100)
vram_task = progress.add_task(f"GPU {gpu.id} VRAM Usage", total=100)
gpu_tasks.append((gpu.id, gpu_task, vram_task))
with Live(progress, refresh_per_second=10):
try:
while True:
# Update CPU utilization
cpu_utilization = psutil.cpu_percent(interval=None)
progress.update(cpu_task, completed=cpu_utilization)
# Update GPU info
gpus = GPUtil.getGPUs()
for gpu in gpus:
gpu_util = gpu.load * 100
mem_util = gpu.memoryUtil * 100
for gid, gpu_task_id, vram_task_id in gpu_tasks:
if gid == gpu.id:
progress.update(gpu_task_id, completed=gpu_util)
progress.update(vram_task_id, completed=mem_util)
time.sleep(0.1)
except KeyboardInterrupt:
pass
if __name__ == '__main__':
main()