繁体   English   中英

如何测量 Python 中单个代码行的 CPU 使用率(百分比)?

[英]How to measure cpu usage (as a percentage) of a single code line in Python?

我需要知道当整个程序执行时,这段特定的代码会加载多少我的 cpu:

cap.set(cv.CAP_PROP_POS_FRAMES,random_frame)

这条线是某个程序的一部分。 但我只对这条特定线路如何加载 cpu 感兴趣。 我不知道具体怎么衡量。

更准确地说,这是我的完整代码:

import cv2 as cv
import random

cap = cv.VideoCapture('file_name.avi')

random_frame = random.randint(1,99999)

cap.set(cv.CAP_PROP_POS_FRAMES,random_frame)

ret, frame = cap.read()

cv.imshow("random_frame",frame)

while cap.isOpened():
    if cv.waitKey(1) == ord('q'):
        break
    
cap.release()
cv.destroyAllWindows()

Windows 7操作系统

多处理库包含一个名为 Process 的 class,它允许您表示在线程上运行的进程。 您可以使用psutil.Process()启动 function 的进程,使用 psutil.Process .start()抓取它并使用 function .cpu_percent (interval=1)监控它。

import multiprocessing
import psutil
import random
#import your other dependencies here.

def monitorFunction():
  cap.set(cv.CAP_PROP_POS_FRAMES,random_frame)

functionProcess = multiprocessing.Process (name='process', target=monitorFunction)
functionProcess.start()

while(True):
    currentProcess = psutil.Process()
    print(currentProcess.cpu_percent(interval=1))
import multiprocessing as mp
import psutil
import random
import cv2 as cv
import random

cap = cv.VideoCapture ('file_name.avi')

random_frame = random.randint (1, 99999)


def monitorFunction():
  cap.set (cv.CAP_PROP_POS_FRAMES,random_frame)

def monitor (target):
    worker_process = mp.Process(target=target)
    worker_process.start()
    p = psutil.Process(worker_process.pid)

    # log cpu usage of `worker_process` every 10 ms
    cpu_percents = []
    while worker_process.is_alive():
        cpu_percents.append(p.cpu_percent())
        time.sleep(0.01)

    worker_process.join()
    return cpu_percents

cpu_percents = monitor(target=monitorFunction)
print (cpu_percents)

这应该有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM