2017-04-10 10 views
0

이제 psutil을 사용하는 프로세스의 현재 CPU 사용량을 얻을 수 있지만 지난 5, 10 및 15 분의 평균 CPU 사용량을 얻고 싶습니다.프로세스의 마지막 5 분 동안 CPU 사용량을 얻을 수 있습니까?

+0

평균 5, 10, 15 분 이상 추적하면됩니까? – Carcigenicate

+0

나는 지금도 같은 일을하고 있지만, 나는 5 분 전의 기록을 원한다. 가능한가? –

+0

나는 계속해서 계속해서 추적하고 마지막 * n * 분을 평균치로 기록한다. – Carcigenicate

답변

0

제안 1 : 나는 다음과 같은 코드를 테스트하지 않았습니다

은 - 단지 그림을 위해 그것을 공유.

CPU 사용량 5, 10, 15 분을 계산/인쇄하는 3 개의 스레드를 사용하십시오. 문서에 따라 사용 psutil.cpu_percent(interval=0.0) :

반환 으로 현재 시스템 전체의 CPU 사용률을 나타내는 유동 비율 ... 간격은 0.0 또는 없음 반환 마지막 통화 또는 모듈 가져 오기 경과 시스템 CPU 시간을 비교하지 않을 때 바로 ... psutil.cpu_percent (간격 = 0.0) 이후

, (시간이 평균 사용을 원하는) 특정 간격 동안 잠을 스레드를 넣어 :

import os 
import time 
import psutil 

....... 

p = psutil.Process(os.getpid()) # pid of the current process 
p.cpu_percent(interval=0.0) 
time.sleep(300) # for 5 mins cpu usage 

...... 
,691 363,210

제안 2 :

단일 스레드 기록 일정 간격 (분마다)에서 CPU 사용률 (어레이에 추가)는 평균, 즉 다른 스레드 값을 취하고 산출 마지막 다섯 개 값을 얻을 마지막으로 10을 나눈 값을 5로 나누어 10으로 나눕니다.

이 경우 첫 번째 스레드는 값을 고정 길이, 즉 15 분 (CPU 사용량은 지난 15 분)으로 큐에 넣어야합니다. 이를 위해 당신은 collections.deque를 사용할 수 있습니다 MAXLEN 지정 또는 없음입니다하지 않을 경우

q = collections.deque(maxlen=15) 
q.append(elem) 

, deques 임의 길이로 성장할 수 있습니다. 그렇지 않은 경우 양면 큐는 지정된 최대 길이 인 길이로 제한됩니다. 제한된 길이의 양 끝 (deque)이 채워지면 새 항목이 추가 될 때 해당 항목 수가 반대쪽 끝에서 삭제됩니다.