zoukankan      html  css  js  c++  java
  • 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}")
    
    
    
    
  • 相关阅读:
    Maven笔记之面试题合集
    Maven笔记之核心概念及常用命令
    UML中的关系
    RocketMq核心概念
    linux安装rocketMq(包括安装maven,JDK)
    linux安装JDK,配置环境变量
    ASP.NET Core读取appsettings.json配置文件信息
    ASP.NET Core获取客户端IP地址
    ASP.NET Core根据环境切换NLog配置
    ASP.NET Core使用NLog记录日志
  • 原文地址:https://www.cnblogs.com/xujunkai/p/15589356.html
Copyright © 2011-2022 走看看