[英]How to measure cpu usage (as a percentage) of a single code line in Python?
I need to know how much this particular line of code loads my cpu when whole program is executed:我需要知道当整个程序执行时,这段特定的代码会加载多少我的 cpu:
cap.set(cv.CAP_PROP_POS_FRAMES,random_frame)
This line is part of a certain program.这条线是某个程序的一部分。 But I'm only interested in how this particular line loads the cpu.
但我只对这条特定线路如何加载 cpu 感兴趣。 I don't know exactly how to measure it.
我不知道具体怎么衡量。
To be more precised, this is my full code:更准确地说,这是我的完整代码:
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 operating system Windows 7操作系统
The multiprocessing library contains a class called Process that allows you to represent aa process running on a thread.多处理库包含一个名为 Process 的 class,它允许您表示在线程上运行的进程。 You can start the process for a function with
.start()
, grab it with psutil.Process()
and monitor it using the function .cpu_percent (interval=1)
.您可以使用
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)
This should work.这应该有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.