|
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, |
|
physical_hard_disk, |
|
nvidia_info |
|
] |
|
) |
|
pprint(data) |
|
|
|
|