Spaces:
Sleeping
Sleeping
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 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(): | |
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) | |