我是批处理脚本的新手,遇到了问题。 我正在运行一个命令来获取GPU利用率,我想将其子串 这样我就可以将利用率作为整数使用。
正在运行GPU 00000000:01:00.0
Utilization
Gpu : 100 %
Memory : 0 %
Encoder : 0 %
Decoder : 0 %
给我这个输出:
:checkGPUUtil
cd nvsmiPath
goto :loop
timeout 1
goto :start
:loop
if %tries% leq 3 (
set /a tries +=1
sleep 10
goto :loop
)
以下是相关的蝙蝠部分:
self.timers_frame.columnconfigure(0, weight=1)
所以我要找的是复制GPU列中显示的值,当前为100,并将其分配给整数。
我怎样才能做到这一点?
答案 0 :(得分:1)
for %%a in (gpu1 gpu2) do set "%%a="
for /f "tokens=1,2delims=: " %%a in ('nvidia-smi -q -d UTILIZATION'
) do if "%%a"=="Gpu" if defined gpu1 (set /a gpu2=%%b) else (set /a gpu1=%%b)
echo GPU : %gpu1% and %gpu2%
set gpu
在:和 Space 上执行命令(单引号)标记,选择第一个和第二个标记。如果第一个标记与Gpu
完全匹配,则将第二个标记分配给变量。
请参阅提示中的for /f
(或SO上的示例)以获取文档。
[修改为2 gpus - 在原始问题中提及此信息会使任务更容易。]