如何测量Python中cap.set单行代码的CPU占用百分比
测量Windows 7下Python代码特定行的CPU负载方法
一、Windows任务管理器(快速粗略测量)
- 操作步骤:
- 按
Ctrl+Shift+Esc打开任务管理器,或者右键任务栏选择「任务管理器」 - 切换到「性能」标签查看整体CPU使用率,或者到「进程」标签找到
python.exe进程,实时监控它的CPU占用 - 为精准定位目标代码行的执行时机,可在代码中添加触发标记:在
cap.set(...)前加一行input("按回车执行目标代码行"),提前盯好任务管理器,按回车后立刻观察CPU变化
- 按
二、用psutil在代码内精准统计
psutil可直接获取当前进程的CPU使用数据,能计算目标代码行的CPU负载,无需依赖外部工具。
操作步骤:
- 先安装psutil:打开命令提示符,运行
pip install psutil - 修改代码如下:
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占用,适合定位特定代码段的负载。
操作步骤:
- 安装Py-Spy:打开命令提示符,运行
pip install py-spy - 先启动你的Python程序,不要关闭
- 打开新的命令提示符,运行
py-spy top --pid <你的Python进程PID>,PID可从任务管理器「进程」标签的python.exe条目里找到 - 在弹出的top界面中,找到
cv2.VideoCapture.set对应的条目,即可查看它的CPU占用占比
内容的提问来源于stack exchange,提问作者Sebastian
相关产品推荐
相关产品推荐

