Python实现对Ubuntu22.04系统硬件性能的监测

import cpuinfo
import psutil
import GPUtil
from tabulate import tabulate
import subprocess


class PCInfo:

    @staticmethod
    def get_gpu_info():
        gpu_list = []
        Gpus = GPUtil.getGPUs()

        for gpu in Gpus:
            gpu_id = f"GPU {gpu.id}"
            gpu_name = gpu.name
            gpu_memory_total = f"{round(gpu.memoryTotal / 1024, 2)} GB"
            gpu_memory_used = f"{round(gpu.memoryUsed / 1024, 2)} GB"
            gpu_memory_util = f"{round(gpu.memoryUtil * 100, 2)}%"

            try:
                cmd = f'nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits --id={gpu.id}'
                temperature_output = subprocess.check_output(cmd, shell=True, text=True)
                gpu_temperature = f"{temperature_output.strip()}°C"
            except:
                gpu_temperature = "N/A"

            gpu_list.append([gpu_id, gpu_name, gpu_memory_total, gpu_memory_used, gpu_memory_util, gpu_temperature])

        return gpu_list

    @staticmethod
    def get_cpu_info():
        cpu_list = []
        cpu_count = psutil.cpu_count(logical=False)
        xc_count = psutil.cpu_count()
        cpu_slv = f"{round(psutil.cpu_percent(1), 2)}%"

        temperatures = psutil.sensors_temperatures()
        cpu_temperatures = temperatures.get('coretemp', [])
        average_temperature = sum(sensor.current for sensor in cpu_temperatures) / len(cpu_temperatures)

        info = cpuinfo.get_cpu_info()
        cpu_model = info['brand_raw']

        cpu_list.append([cpu_model, cpu_count, xc_count, cpu_slv, f"{round(average_temperature, 2)}°C"])

        return cpu_list

    @staticmethod
    def get_memory_info():
        mem_list = []
        memory = psutil.virtual_memory()
        total_nc = f"{round(memory.total / (1024 ** 3), 2)} GB"
        used_nc = f"{round(memory.used / (1024 ** 3), 2)} GB"
        free_nc = f"{round(memory.free / (1024 ** 3), 2)} GB"
        syl_nc = f"{round(memory.used / memory.total * 100, 2)}%"
        mem_list.append([total_nc, used_nc, free_nc, syl_nc])
        return mem_list

    @staticmethod
    def get_disk_info():
        disk_partitions = psutil.disk_partitions()
        table_data = []
        for partition in disk_partitions:
            disk_usage = psutil.disk_usage(partition.mountpoint)
            if disk_usage.total < 1024 ** 3:
                continue
            table_data.append([
                partition.device,
                partition.mountpoint,
                partition.fstype,
                f"{round(disk_usage.total / (1024 ** 3), 2)} GB",
                f"{round(disk_usage.used / (1024 ** 3), 2)} GB",
                f"{round(disk_usage.free / (1024 ** 3), 2)} GB",
                f"{disk_usage.percent}%"
            ])

        return table_data


pc_info = PCInfo()

gpu_info = pc_info.get_gpu_info()
cpu_info = pc_info.get_cpu_info()
memory_info = pc_info.get_memory_info()
disk_info = pc_info.get_disk_info()

print("GPU信息:")
print(tabulate(gpu_info, headers=["GPU_ID", "GPU型号", "总显存", "已用显存", "GPU使用率", "GPU温度"], tablefmt="grid"))
print("\nCPU信息:")
print(tabulate(cpu_info, headers=["CPU型号", "CPU核数", "CPU线程数", "CPU使用率", "CPU温度"], tablefmt="grid"))
print("\n内存信息:")
print(tabulate(memory_info, headers=["总内存", "已用内存", "可用内存", "内存使用率"], tablefmt="grid"))
print("\n硬盘信息:")
print(tabulate(disk_info, headers=["分区", "挂载点", "文件系统类型", "总容量", "已使用空间", "可用空间", "使用率"], tablefmt="grid"))
  • GPU信息: 使用GPUtil库获取GPU信息,包括GPU ID、型号、总显存、已用显存、GPU使用率和GPU温度(如果可用)。

  • CPU信息: 使用psutil和cpuinfo库获取CPU信息,包括CPU型号、核数、线程数、CPU使用率和CPU温度。

  • 内存信息: 使用psutil获取内存信息,包括总内存、已用内存、可用内存和内存使用率。

  • 硬盘信息: 使用psutil获取硬盘信息,包括分区、挂载点、文件系统类型、总容量、已使用空间、可用空间和使用率。

        通过监测硬件性能信息,我们可以更好地了解自己的计算机,帮助自己进行性能优化、故障排除以及合理使用计算资源。

        代码结果我的电脑信息如下:

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YIBO0408

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值