如何使用 python 测量 Windows 中每个进程的 GPU 使用率?

How to measure GPU usage per process in Windows using python?

我想像 Windows taskmgr.exe 中那样测量每个进程的 GPU 使用率,但是我在尝试使用 pyNVML 库时遇到了几个问题。因此,我有几个问题。

首先,目前是否可以使用 Python 测量 Windows 中每个进程的确切 GPU 使用率?我已经尝试过 nvidia-smi 查询,但这似乎没有显示每个进程 的内存使用率和利用率百分比

其次,如果可以使用 Python 以这种方式测量 GPU 使用率,我想以与 Windows taskmgr.exe 中类似的方式测量和显示它] Windows 10.

到目前为止,这是我的代码:

nvmlInit()
deviceCount = nvmlDeviceGetCount()
#print(deviceCount)
for device_id in range(deviceCount):
    hd = nvmlDeviceGetHandleByIndex(device_id)
    #print(handle)

cps = nvmlDeviceGetGraphicsRunningProcesses(hd)

for ps in cps :
    pp = ps.pid
    #print(pp)
    try :
        name = str(nvmlSystemGetProcessName(ps.pid))
        n = name.split("\")
        #print(n[len(n)-1][:-1])
        process_name = n[len(n)-1][:-1]
        if process_name == 'chrome.exe':
            print(process_name, pp, ps.usedGpuMemory)
    except:
        pass

我的结果:

chrome.exe 16688 None

如您所见,这不会显示每个进程的 GPU 内存使用情况,但我需要 taskmgr 的 GPU 部分中显示的信息。 (我不需要可视化。)

我的电脑规格是 Windows 10 pro、GTX 950、i5-6600

如果目前 Python 无法做到这一点,您是否有任何其他建议来自动收集每个进程的 GPU 使用率。

谢谢。

查看 Jonathan DEKHTIAR 的回答,解释它不起作用的原因。 作为解决方法,您可以尝试从 powershell Get-Counter -Counter "\GPU Engine(*)\Utilization Percentage"

中获取值