You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何测量Python中cap.set单行代码的CPU占用百分比

测量Windows 7下Python代码特定行的CPU负载方法

一、Windows任务管理器(快速粗略测量)

  • 操作步骤:
    1. 按Ctrl+Shift+Esc打开任务管理器,或者右键任务栏选择「任务管理器」
    2. 切换到「性能」标签查看整体CPU使用率,或者到「进程」标签找到python.exe进程,实时监控它的CPU占用
    3. 为精准定位目标代码行的执行时机,可在代码中添加触发标记:在cap.set(...)前加一行input("按回车执行目标代码行"),提前盯好任务管理器,按回车后立刻观察CPU变化

二、用psutil在代码内精准统计

psutil可直接获取当前进程的CPU使用数据,能计算目标代码行的CPU负载,无需依赖外部工具。

操作步骤:

  1. 先安装psutil:打开命令提示符,运行pip install psutil
  2. 修改代码如下:
import cv2 as cv
import random
import psutil
import time

# 获取当前Python进程对象
proc = psutil.Process()

cap = cv.VideoCapture('file_name.avi')
random_frame = random.randint(1,99999)

# 记录执行前的CPU时间和时间戳
prev_cpu = proc.cpu_times()
start_time = time.time()

# --- 目标代码行 ---
cap.set(cv.CAP_PROP_POS_FRAMES, random_frame)
# --- 目标代码行结束 ---

# 记录执行后的CPU时间和时间戳
end_time = time.time()
curr_cpu = proc.cpu_times()

# 计算目标行占用的CPU总时间(用户态+系统态)
cpu_used = (curr_cpu.user - prev_cpu.user) + (curr_cpu.system - prev_cpu.system)
# 计算目标行执行总耗时
total_time = end_time - start_time
# 计算CPU负载百分比(多核环境下结果可能超100%,属于正常现象)
cpu_load = (cpu_used / total_time) * 100

print(f"目标代码行执行耗时: {total_time:.4f}秒")
print(f"目标代码行CPU时间占用: {cpu_used:.4f}秒")
print(f"目标代码行CPU负载: {cpu_load:.2f}%")

ret, frame = cap.read()
cv.imshow("random_frame",frame)

while cap.isOpened():
    if cv.waitKey(1) == ord('q'):
        break
    
cap.release()
cv.destroyAllWindows()
  • 说明:
    • cpu_times()获取进程在用户态和系统态消耗的CPU时间,两者差值就是目标代码行实际占用的CPU资源
    • 若负载百分比超过100%,是因为程序用到了多核CPU,属于正常情况

三、Py-Spy非侵入式采样分析(无需修改代码)

Py-Spy是轻量的采样工具,可实时监控Python进程的函数调用和CPU占用,适合定位特定代码段的负载。

操作步骤:

  1. 安装Py-Spy:打开命令提示符,运行pip install py-spy
  2. 先启动你的Python程序,不要关闭
  3. 打开新的命令提示符,运行py-spy top --pid <你的Python进程PID>,PID可从任务管理器「进程」标签的python.exe条目里找到
  4. 在弹出的top界面中,找到cv2.VideoCapture.set对应的条目,即可查看它的CPU占用占比

内容的提问来源于stack exchange,提问作者Sebastian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:45:47