欢迎访问宙启技术站
智能推送

如何利用win32pdh在Python中获取CPU使用率

发布时间:2023-12-25 08:15:22

在Python中使用win32pdh模块获取CPU使用率的步骤如下:

1. 安装依赖库:首先需要安装pywin32库,在命令行中执行以下命令:

   pip install pywin32
   

2. 导入必要的模块:在Python脚本中导入必要的模块:

   import win32pdh
   import time
   import os
   

3. 定义函数获取CPU使用率:创建一个函数,使用win32pdh模块获取当前CPU使用率。以下是一个示例代码:

   def get_cpu_usage():
       query = win32pdh.OpenQuery()  # 创建一个查询对象
       counter_path = win32pdh.MakeCounterPath((None, 'Processor', '_Total', None, 0, 'Processor Time'))  # 要监测的计数器路径
       counter_handle = win32pdh.AddCounter(query, counter_path)  # 添加计数器到查询对象
       
       win32pdh.CollectQueryData(query)  # 收集查询数据
       time.sleep(1)  # 等待1秒使得收集有实际数据
       
       win32pdh.CollectQueryData(query)  # 再次收集查询数据
       counter_info = win32pdh.GetCounterInfo(counter_handle)  # 获取计数器信息
       counter_value = win32pdh.GetFormattedCounterValue(counter_handle, win32pdh.PDH_FMT_DOUBLE)[1]  # 获取计数器值
       
       win32pdh.CloseQuery(query)  # 关闭查询
       
       return counter_value
   

4. 调用函数获取CPU使用率:调用定义的函数获取CPU使用率,并输出结果。

   cpu_usage = get_cpu_usage()
   print('CPU Usage: {}%'.format(cpu_usage))
   

完整代码如下所示:

import win32pdh
import time
import os

def get_cpu_usage():
    query = win32pdh.OpenQuery()  # 创建一个查询对象
    counter_path = win32pdh.MakeCounterPath((None, 'Processor', '_Total', None, 0, 'Processor Time'))  # 要监测的计数器路径
    counter_handle = win32pdh.AddCounter(query, counter_path)  # 添加计数器到查询对象
    
    win32pdh.CollectQueryData(query)  # 收集查询数据
    time.sleep(1)  # 等待1秒使得收集有实际数据
    
    win32pdh.CollectQueryData(query)  # 再次收集查询数据
    counter_info = win32pdh.GetCounterInfo(counter_handle)  # 获取计数器信息
    counter_value = win32pdh.GetFormattedCounterValue(counter_handle, win32pdh.PDH_FMT_DOUBLE)[1]  # 获取计数器值
    
    win32pdh.CloseQuery(query)  # 关闭查询
    
    return counter_value

cpu_usage = get_cpu_usage()
print('CPU Usage: {}%'.format(cpu_usage))

这段代码将输出当前系统的CPU使用率。需要注意的是,由于CPU使用率是实时获取的,所以在收集数据之前需要等待一段时间,这里示例代码使用了1秒的等待时间,可以根据实际情况调整等待时间。

另外,为了确保代码正常运行,需要在Windows系统下执行。