本站消息

站长简介/公众号


站长简介:逗比程序员,理工宅男,前每日优鲜python全栈开发工程师,利用周末时间开发出本站,欢迎关注我的微信公众号:幽默盒子,一个专注于搞笑,分享快乐的公众号

  价值13000svip视频教程,python大神匠心打造,零基础python开发工程师视频教程全套,基础+进阶+项目实战,包含课件和源码

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2020-07(10)

2020-08(50)

python 调用powershell 命令获得GPU利用率

发布于2020-08-27 20:57     阅读(918)     评论(0)     点赞(15)     收藏(5)



python 调用powershell 命令获得GPU利用率

获取GPU使用率通过powershell, 输入get-counter -counter “\GPU Engine()\utilization percentage"
根据你使用的哪个软件的PID ,来获得这个程序的GPU使用率。
但是使用subprocees.Popen(cmd) , cmd = get-counter -counter "\GPU Engine(
)\utilization percentage” 会报错误,如term "*’ is not recognized as the name of a cmdlet.等错误。
最后查出是编码问题, python 3默认的编码是UTF8 ,而win10 cmd 默认的编码为437(OEM-United States), 中文win10是GBK.
所以命令行传入时需要加命令进行编码,

def get_gpu_video_codec0_utilization(self):
    """
    # this utilization will need adjustment according to OS version
    step1 : Get the powerdvd pip
    step2: powershell cmd to get the GPU usage
    """
    resp = subprocess.check_output('tasklist | findstr "PowerDVD.exe"', shell=True)
    powerdvd_pid = resp.decode().partition("PowerDVD.exe")[2].strip().split(" ")[0]
    print(powerdvd_pid)
    args = r'get-counter -counter "\GPU Engine(*engtype_video codec 0)\utilization percentage"'
    b_args = args.encode("CP437")  # check win10 cmd encode mode is 437 (US)
    startupinfo = subprocess.STARTUPINFO()
    startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW # optional, no windows pop up while running command
    popen = subprocess.Popen("powershell.exe -NoLogo -NonInteractive -Command - ", shell=True, startupinfo=startupinfo, stderr=subprocess.STDOUT,
                              stdin=subprocess.PIPE, stdout=subprocess.PIPE)
    b_outs, b_error = popen.communicate(b_args, timeout=15)
    outs = b_outs.decode("CP437").split("\r\n") # decode with the same mode
    outs_len = len(outs)
    gpu_video_codec0_usage = 0
    for i in range(0, outs_len):
        if powerdvd_pid in outs[i]:
            gpu_video_codec0_usage = outs[i+2].strip()[0:5]
    logger.info("GPU Video codec0 usage is %s", gpu_video_codec0_usage)
    return gpu_video_codec0_usage`

原文链接:https://blog.csdn.net/elladeng/article/details/108236297






所属网站分类: 技术文章 > 博客

作者:丸子

链接:https://www.pythonheidong.com/blog/article/496444/e16b53f133528e068a0e/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

15 0
收藏该文
已收藏

评论内容:(最多支持255个字符)