| 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) |
|
|
|
|