psutil - Uso de la CPU por proceso en Python
install psutil python 3 (4)
>>> import os
>>> os.times()
(1.296875, 0.765625, 0.0, 0.0, 0.0)
>>> print os.times.__doc__
times() -> (utime, stime, cutime, cstime, elapsed_time)
Return a tuple of floating point numbers indicating process times.
Del manual (2.5):
veces ()
Devuelve una tupla de 5 números de punto flotante que indica el tiempo acumulado (procesador u otro) en segundos. Los elementos son: tiempo de usuario, hora del sistema, hora del usuario de los niños, hora del sistema de los niños y tiempo real transcurrido desde un punto fijo en el pasado, en ese orden. Consulte la página del manual de Unix veces (2) o la documentación correspondiente de la API de Windows Platform. Disponibilidad: Macintosh, Unix, Windows.
¿Es posible para mí ver la cantidad de uso del procesador (% del máximo) que usa la aplicación python actual?
Escenario: mi host me permitirá ejecutar mi aplicación siempre que no consuma más del X% de la potencia de la CPU, por lo que me gustaría que se "vigile a sí mismo" y reduzca la velocidad. Entonces, ¿cómo puedo saber cuánto CPU está usando la aplicación?
La plataforma de destino es * nix, sin embargo, me gustaría hacerlo también en un host Win.
Use time.clock()
para obtener el tiempo de CPU. Para obtener el porcentaje de uso de la CPU, el tiempo de CPU transcurrido / el tiempo transcurrido
Por ejemplo, si el tiempo de CPU transcurrido es 0.2 y el tiempo transcurrido es 1, entonces el uso de la CPU es del 20%.
Nota: debe dividirse por la cantidad de procesadores que tiene. Si tienes 2, es decir, un doble núcleo:
import decimal,timeit
decimal.getcontext().prec=1000
def torture():
decimal.Decimal(2).sqrt()
time.sleep(0.1)
import time
clock=time.clock()
while 1:
clock=timeit.timeit(torture,number=10)
tclock=time.clock()
print((tclock-clock)*p)
clock=tclock
Al usar psutil :
>>> import psutil
>>> p = psutil.Process()
>>> p.cpu_times()
cputimes(user=0.06, system=0.03)
>>> p.cpu_percent(interval=1)
0.0
>>>
El módulo de resource
proporciona getrusage
que puede proporcionarle la información que necesita, al menos para plataformas tipo Unix.
Tenga en cuenta que el uso de CPU como porcentaje siempre se mide en un intervalo de tiempo. Básicamente, es la cantidad de tiempo que su programa realiza haciendo algo dividido por el intervalo de tiempo.
Por ejemplo, si su aplicación tarda 2 segundos de tiempo de CPU en un período de 5 segundos, puede decirse que está usando el 40% de la CPU.
Tenga en cuenta que este cálculo, tan simple como parece, puede ser complicado cuando se usa un sistema multiprocesador. Si su aplicación usa 7 segundos de tiempo de CPU en 5 segundos de tiempo de reloj de pared en un sistema de dos procesadores, ¿dice usted que usa 140% o 70% de CPU?
Actualización: como gimel menciona, la función os.times
también proporciona esta información de una manera independiente de la plataforma. Las notas de cálculo anteriores aún se aplican, por supuesto.