| | import psutil |
| | import platform |
| | import getpass |
| | import datetime |
| | from pynvml import * |
| | from pprint import pprint |
| |
|
| | 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(): |
| | return {"system_cpu_count": psutil.cpu_count(logical=False)} |
| |
|
| | def physical_memory(): |
| | |
| | return {"system_memory": round(psutil.virtual_memory().total, 2)} |
| |
|
| | def physical_hard_disk(): |
| | 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() |
| | 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), |
| | "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 e1: |
| | nvidia_dict["state"] = False |
| | print(f'nvidia_error_1_{e1}') |
| | except Exception as e2: |
| | nvidia_dict["state"] = False |
| | print(f'nvidia_erro_2_{e2}') |
| | 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, |
| | |
| | nvidia_info |
| | ] |
| | ) |
| | pprint(data) |
| |
|
| |
|