Solución:
La biblioteca psutil le brinda información sobre CPU, RAM, etc., en una variedad de plataformas:
psutil es un módulo que proporciona una interfaz para recuperar información sobre los procesos en ejecución y la utilización del sistema (CPU, memoria) de forma portátil mediante el uso de Python, implementando muchas funcionalidades que ofrecen herramientas como ps, top y el administrador de tareas de Windows.
Actualmente es compatible con Linux, Windows, OSX, Sun Solaris, FreeBSD, OpenBSD y NetBSD, tanto en arquitecturas de 32 bits como de 64 bits, con versiones de Python de 2.6 a 3.5 (los usuarios de Python 2.4 y 2.5 pueden usar la versión 2.1.3).
Algunos ejemplos:
#!/usr/bin/env python
import psutil
# gives a single float value
psutil.cpu_percent()
# gives an object with many fields
psutil.virtual_memory()
# you can convert that object to a dictionary
dict(psutil.virtual_memory()._asdict())
# you can have the percentage of used RAM
psutil.virtual_memory().percent
79.2
# you can calculate percentage of available memory
psutil.virtual_memory().available * 100 / psutil.virtual_memory().total
20.8
Aquí hay otra documentación que proporciona más conceptos y conceptos de interés:
- https://psutil.readthedocs.io/en/latest/
Utilice la biblioteca psutil. En Ubuntu 18.04, pip instaló 5.5.0 (última versión) a partir del 30/01/2019. Las versiones anteriores pueden comportarse de manera algo diferente. Puede verificar su versión de psutil haciendo esto en Python:
from __future__ import print_function # for Python2
import psutil
print(psutil.__version__)
Para obtener algunas estadísticas de memoria y CPU:
from __future__ import print_function
import psutil
print(psutil.cpu_percent())
print(psutil.virtual_memory()) # physical memory usage
print('memory % used:', psutil.virtual_memory()[2])
los virtual_memory
(tupla) tendrá el porcentaje de memoria utilizada en todo el sistema. Esto parecía estar sobreestimado en un pequeño porcentaje para mí en Ubuntu 18.04.
También puede obtener la memoria utilizada por la instancia actual de Python:
import os
import psutil
pid = os.getpid()
py = psutil.Process(pid)
memoryUse = py.memory_info()[0]/2.**30 # memory use in GB...I think
print('memory use:', memoryUse)
que da el uso de memoria actual de su secuencia de comandos de Python.
Hay algunos ejemplos más detallados en la página de pypi para psutil.
Solo para Linux: una línea para el uso de RAM con solo dependencia de stdlib:
import os
tot_m, used_m, free_m = map(int, os.popen('free -t -m').readlines()[-1].split()[1:])
editar: dependencia del sistema operativo de la solución especificada