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获取硬盘信息,包括分区、挂载点、文件系统类型、总容量、已使用空间、可用空间和使用率。
通过监测硬件性能信息,我们可以更好地了解自己的计算机,帮助自己进行性能优化、故障排除以及合理使用计算资源。
代码结果我的电脑信息如下: