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 {"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()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库