【Python管理GPU】pynvml工具的安装与使用

可以利用python工具pynvml来实现显卡信息的读取与管理

Nvidia的显卡提供了NVML(英伟达显卡管理库)以及构建在其上的nvidia-smi(显卡系统管理界面),可以方便的查询显卡的信息和工作状况。在python中同样可以利用pynvml库来实现显卡信息的获取。

1.安装

可以使用pip方便的安装:

pip install nvidia-ml-py

#也可以根据python版本制定2/3
#python2
pip install nvidia-ml-py2

#python3
pip install nvidia-ml-py3

#或者使用源码安装
#下载链接:http://pypi.python.org/pypi/nvidia-ml-py/
sudo python setup.py install


#e.g
~$ pip install nvidia-ml-py3
>>>
Collecting nvidia-ml-py3
>>>  Downloading 
>>> https://files.pythonhosted.org/packages/6d/64/cce82bddb80c0b0f5c703bbdafa94bfb69a1c5ad7a79cff00b482468f0d3/nvidia-ml-py3-7.352.0.tar.gz
>>>  Building wheels for collected packages: nvidia-ml-py3
>>>  Running setup.py bdist_wheel for nvidia-ml-py3 ... done
>>>  Stored in directory: xxxxxxx/xxxxxx/xxxxx
Successfully built nvidia-ml-py3
Installing collected packages: nvidia-ml-py3
Successfully installed nvidia-ml-py3-7.352.0
2.使用
#简单使用
from pynvml import *
nvmlInit()     #初始化
print("Driver: "nvmlSystemGetDriverVersion())  #显示驱动信息
#>>> Driver: 384.xxx

#查看设备
deviceCount = nvmlDeviceGetCount()
for i in range(deviceCount):
    handle = nvmlDeviceGetHandleByIndex(i)
    print("GPU", i, ":", nvmlDeviceGetName(handle))
#>>>
#GPU 0 : b'GeForce GTX 1080 Ti'
#GPU 1 : b'GeForce GTX 1080 Ti'

#查看显存、温度、风扇、电源
handle = nvmlDeviceGetHandleByIndex(0)
info = nvmlDeviceGetMemoryInfo(handle)
print("Memory Total: ",info.total)
print("Memory Free: ",info.free)
print("Memory Used: ",info.used)

print("Temperature is %d C"%nvmlDeviceGetTemperature(handle,0))
print("Fan speed is "nvmlDeviceGetFanSpeed(handle))
print("Power ststus",nvmlDeviceGetPowerState(handle))


#最后要关闭管理工具
nvmlShutdown()


#nvmlDeviceXXX有一系列函数可以调用,包括了NVML的大多数函数。
#具体可以参考:https://docs.nvidia.com/deploy/nvml-api/group__nvmlDeviceQueries.html#group__nvmlDeviceQueries

在这里插入图片描述


nvml:https://docs.nvidia.com/deploy/nvml-api/group__nvmlDeviceQueries.html#group__nvmlDeviceQueries
pypi:https://pypi.org/project/nvidia-ml-py/
usage:https://pythonhosted.org/nvidia-ml-py/
nvidia_smi:https://github.com/ultrabug/py3status/blob/master/py3status/modules/nvidia_smi.py
py3status:https://py3status.readthedocs.io/en/latest/modules.html
unsplash:https://unsplash.com/
pexels:https://www.pexels.com/

Python中,你可以使用第三方库来检测系统资源的使用情况,包括内存、GPU和CPU占用。以下是一些常用的库和工具: 1. `psutil`:这是一个跨平台库,可以用来获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)的信息。 2. `GPUtil`:这是一个用于检测NVIDIA GPU状态的Python库,可以显示当前GPU的内存和CPU占用。 3. `pynvml`:这个库是NVIDIA Management Library的Python封装,提供了访问NVIDIA GPU设备状态的接口。 下面是一个简单的示例,展示如何使用这些库来获取系统资源的占用情况: ```python import psutil import GPUtil # 获取CPU占用率 cpu_usage = psutil.cpu_percent(interval=1) # 获取内存使用情况 memory_usage = psutil.virtual_memory() memory_total = memory_usage.total memory_used = memory_usage.used memory_free = memory_usage.free # 获取GPU使用情况 gpus = GPUtil.getGPUs() for gpu in gpus: gpu_name = gpu.name gpu_memory_used = gpu.memoryUsed gpu_memory_total = gpu.memoryTotal gpu负荷 = gpu.load*100 # 获取特定软件的内存占用 # 注意:这通常需要特定的方法,可能需要结合操作系统命令 # 例如,在Windows系统中,你可以使用以下代码 # 请确保你知道要检测的进程名称 proc_name = 'process.exe' for proc in psutil.process_iter(['pid', 'name']): if proc.info['name'] == proc_name: pid = proc.info['pid'] mem_info = psutil.Process(pid).memory_info() mem_usage = mem_info.rss break # 输出结果 print(f"CPU Usage: {cpu_usage}%") print(f"Total Memory: {memory_total / (1024**3)} GB") print(f"Used Memory: {memory_used / (1024**3)} GB") print(f"Free Memory: {memory_free / (1024**3)} GB") for gpu in gpus: print(f"GPU: {gpu_name}") print(f"Memory Used: {gpu_memory_used / (1024**2)} MB") print(f"Memory Total: {gpu_memory_total / (1024**2)} MB") print(f"Load: {gpu负荷}%") ``` 请注意,`GPUtil`和`pynvml`通常只适用于NVIDIAGPU,如果你使用的是AMD或Intel的GPU,可能需要寻找其他特定的库。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值