Fork me on GitHub

python获取GPU,CPU,硬盘,内存,系统,用户使用情况信息

# -*- coding: utf-8 -*-
# @Time    : 2021/11/22 15:55
# @Author  : xujunkai
# @File    : config_set.py
# @Software: PyCharm
import psutil
import platform
import getpass
import datetime
from pynvml import *


def physical_system_time():
    """
    获取系统启用时间
    """
    return {"system_time": datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")}

def physical_username():
    """
    获取当前用户名
    """
    return {
        "system_user": getpass.getuser()
    }

def physical_platfrom_system():
    """
    获取当前机器系统
    """
    u_name = platform.uname()
    return {"system_name": u_name.system, "system_version": u_name.version}

def physical_cpu():
    """
    获取机器物理CPU个数
    """
    return {"system_cpu_count": psutil.cpu_count(logical=False)}

def physical_memory():
    """
    获取机器物理内存(返回字节bytes)
    """
    # return round(psutil.virtual_memory().total / (1024.0 * 1024.0 * 1024.0), 2)
    return {"system_memory": round(psutil.virtual_memory().total, 2)}

def physical_hard_disk():
    """
    获取机器硬盘信息(字节bytes)
    """
    result = []
    for disk_partition in psutil.disk_partitions():
        o_usage = psutil.disk_usage(disk_partition.device)
        result.append(
            {
                "device": disk_partition.device,
                "fstype":disk_partition.fstype,
                "opts": disk_partition.opts,
                "total": o_usage.total,
            }
        )
    return {"system_hard_disk": result}

def nvidia_info():
    nvidia_dict = {
        "state": True,
        "nvidia_version": "",
        "nvidia_count": 0,
        "gpus": []
    }
    try:
        nvmlInit()
        nvidia_dict["nvidia_version"] = nvmlSystemGetDriverVersion().decode('utf-8')
        nvidia_dict["nvidia_count"] = nvmlDeviceGetCount()
        for i in range(nvidia_dict["nvidia_count"]):
            handle = nvmlDeviceGetHandleByIndex(i)
            memory_info = nvmlDeviceGetMemoryInfo(handle)
            gpu = {
                "gpu_name": nvmlDeviceGetName(handle).decode('utf-8'),
                "total": memory_info.total,
                "free": memory_info.free,
                "used": memory_info.used,
                "temperature": f"{nvmlDeviceGetTemperature(handle, 0)}℃",
                "powerStatus": nvmlDeviceGetPowerState(handle)
            }
            nvidia_dict['gpus'].append(gpu)
    except NVMLError as _:
        nvidia_dict["state"] = False
    except Exception as _:
        nvidia_dict["state"] = False
    finally:
        try:
            nvmlShutdown()
        except:
            pass
    return nvidia_dict

def merge(info_list):
    data = {}
    for item in info_list:
        data.update(
            item()
        )
    return data

def computer_info():
    data = merge(
        [
            physical_system_time,
            physical_username,
            physical_platfrom_system,
            physical_cpu,
            physical_memory,
            physical_hard_disk,
            nvidia_info
        ]
    )
    print(data)


if __name__ == '__main__':
    computer_info()

# 获取总cpu使用率
# for i in range(10):
#     time.sleep(1)
#     print((str(psutil.cpu_percent(1))) + '%')
# 获取剩余内存
# free = str(round(psutil.virtual_memory().free / (1024.0 * 1024.0 * 1024.0), 2))
# 获取物理内存使用率
# memory = int(psutil.virtual_memory().total - psutil.virtual_memory().free) / float(psutil.virtual_memory().total)
# 获取硬盘
# for i in psutil.disk_partitions():
#
#     o = psutil.disk_usage(i.device)
#     print("盘的名称:", i.device)
#     print("fs类型:", i.fstype)
#     print("fs权限:", i.opts)
#     print(f"全部:{o.total}, 已用:{o.used}, 可用:{o.free}")



posted @ 2021-11-22 17:14  是阿凯啊  阅读(2280)  评论(0编辑  收藏  举报