Psutil es una biblioteca multiplataforma de Python que se utiliza para acceder a los detalles del sistema y las utilidades de proceso. Se utiliza para realizar un seguimiento de la utilización de varios recursos en el sistema. Se puede monitorear el uso de recursos como CPU, memoria, discos, red, sensores. Por lo tanto, esta biblioteca se utiliza para la supervisión del sistema, la creación de perfiles, la limitación de los recursos del proceso y la gestión de los procesos en ejecución. Es compatible con las versiones de Python 2.6, 2.7 y 3.4+.
Pasos de instalación en Linux Ubuntu/Debian
sudo pip install psutil
Funciones del sistema
UPC
1) psutil.cpu_times(): esta función proporciona los tiempos de CPU del sistema como una tupla con nombre.
Parámetros:
- usuario: tiempo empleado por los procesos normales que se ejecutan en modo usuario
- sistema: tiempo empleado por los procesos que se ejecutan en modo kernel
- inactivo: tiempo en que el sistema estuvo inactivo
- agradable: tiempo empleado por procesos prioritarios que se ejecutan en modo usuario
- iowait: tiempo dedicado a esperar que se complete la E/S. Esto no se contabiliza en el contador de tiempo de inactividad.
- irq: tiempo dedicado al servicio de interrupciones de hardware
- softirq: tiempo dedicado al servicio de interrupciones de software
- Robo: tiempo empleado por otros sistemas operativos que se ejecutan en un entorno virtualizado.
- invitado: tiempo dedicado a ejecutar una CPU virtual para sistemas operativos invitados bajo el control del kernel de Linux
Ejemplo :
Python
import psutil print(psutil.cpu_times())
Producción
scputimes(usuario=5461.14, agradable=2.44, sistema=1326.65, inactivo=45502.33, iowait=506.24, irq=0.0, softirq=5.46, robo=0.0, invitado=0.0, invitado_agradable=0.0)
2) psutil.cpu_percent(intervalo): esta función calcula el uso actual de la CPU en todo el sistema como un porcentaje. Se recomienda proporcionar un intervalo de tiempo (segundos) como parámetro para la función sobre la cual se calculará el uso promedio de la CPU, ignorando el El parámetro de intervalo podría resultar en una gran variación en los valores de uso.
Ejemplo :
Python
import psutil print(psutil.cpu_percent(1))
Producción
5.0
3) psutil.cpu_count(logical=True): esta función muestra una cantidad de CPU lógicas en el sistema. El núcleo lógico se calcula como el número de núcleos físicos multiplicado por el número de subprocesos que se pueden ejecutar en cada núcleo. En ausencia de núcleo lógico, solo cuenta una cantidad de núcleos físicos.
Ejemplo :
Python
import psutil print("Number of cores in system", psutil.cpu_count()) print("\nNumber of physical cores in system",)
Producción:
Number of cores in system 4 Number of physical cores in system 2
4) psutil.cpu_stats(): esta función brinda estadísticas de la CPU como una tupla con nombre. Las estadísticas incluyen:
- ctx_switches: número de cambios de contexto desde el arranque.
- interrupciones: número de interrupciones desde el arranque.
- soft_interrupts: número de interrupciones de software desde el arranque.
- syscalls: número de llamadas al sistema desde el arranque. Establecido siempre en 0 en Ubuntu.
Ejemplo :
Python
import psutil print("CPU Statistics", psutil.cpu_stats())
scpustats(ctx_switches=37382771, interrupciones=13744347, soft_interrupts=6769413, llamadas al sistema=0)
5) psutil.cpu_freq(): esta función proporciona la frecuencia de la CPU como una tupla que incluye las frecuencias actual, mínima y máxima expresadas en Mhz. En Ubuntu, la frecuencia actual informa el valor en tiempo real. Mientras que en todas las demás plataformas representa el valor nominal «fijo».
Ejemplo :
Python
import psutil print(psutil.cpu_freq())
Producción:
scpufreq(actual=931.42925, min=400.0, max=2000.0)
6) psutil.getloadavg(): esta función proporciona la carga promedio del sistema en los últimos 1, 5 y 15 minutos como una tupla. La carga representa los procesos que se encuentran en un estado ejecutable, ya sea usando la CPU o esperando para usar la CPU (por ejemplo, esperando la E/S del disco).
Ejemplo :
Python
import psutil print(psutil.getloadavg())
Producción:
(0.22, 0.33, 0.35)
Memoria
1) psutil.virtual_memory(): esta función proporciona el uso de la memoria del sistema en bytes. La suma de usados y disponibles puede o no ser igual al total. Para obtener detalles de la memoria física libre, se utiliza esta función.
Parámetros:
- total: memoria física total excluyendo intercambio.
- disponible: la memoria que se puede asignar instantáneamente a los procesos sin que el sistema entre en intercambio.
- Usado: memoria usada.
- libre: la memoria no se usa y está fácilmente disponible
- activo: memoria actualmente en uso o utilizada muy recientemente.
- inactivo: memoria que está marcada como no utilizada.
- búferes: datos de caché como metadatos del sistema de archivos.
- en caché: datos en caché
- compartida: memoria a la que pueden acceder múltiples procesos.
Ejemplo :
Python
import psutil print(psutil.virtual_memory())
Producción:
svmem(total=4028772352, disponible=1061466112, porcentaje=73,7, usado=2401546240, libre=412352512, activo=2176798720, inactivo=1196470272, búfer=70774784, almacenado en caché=1144098816, compartido=8145872 slab3)1
2) psutil.swap_memory(): esta función proporciona detalles de las estadísticas de la memoria de intercambio como una tupla.
Parámetros:
- total: memoria de intercambio total en bytes
- used – memoria de intercambio usada en bytes
- libre: memoria de intercambio libre en bytes
- porcentaje: el porcentaje de uso que se calcula como (total: disponible) / total * 100
- sin: la cantidad de bytes que el sistema ha intercambiado desde el disco
- sout: la cantidad de bytes que el sistema ha intercambiado desde el disco
Ejemplo :
Python
import psutil print(psutil.swap_memory())
Producción:
sswap(total=2097147904L, used=886620160L, free=1210527744L, percent=42.3, sin=1050411008, sout=1906720768)
Discos
1) psutil.disk_partitions(): esta función proporciona los detalles de todas las particiones de disco montadas como una lista de tuplas que incluye el dispositivo, el punto de montaje y el tipo de sistema de archivos.
Ejemplo :
Python
import psutil print(psutil.disk_partitions())
Producción:
[sdiskpart(dispositivo=’/dev/sda1′, punto de montaje=’/’, fstype=’ext4′, opts=’rw, relatime, errores=remontar-ro, datos=ordenado’)]
2) psutil.disk_usage(ruta): esta función brinda estadísticas de uso del disco como una tupla para una ruta determinada. El espacio total, usado y libre se expresan en bytes, junto con el porcentaje de uso.
Ejemplo :
Python
import psutil print(psutil.disk_usage('/'))
Producción:
sdiskusage(total=787310764032, used=26450710528, free=720843354112, percent=3.5)
La red
1) psutil.net_io_counters()- Esta función brinda los detalles de las estadísticas de entrada y salida de la red como una tupla.
Parámetros:
- bytes_sent – número de bytes enviados
- bytes_recv – número de bytes recibidos
- paquetes_enviados: número de paquetes enviados
- packages_recv – número de paquetes recibidos
- errin: número total de errores durante la recepción
- errout – número total de errores durante el envío
- dropin: número total de paquetes entrantes que se descartaron
- abandono: número total de paquetes salientes que se descartaron
Ejemplo :
Python
import psutil print(psutil.net_io_counters())
Producción:
snetio(bytes_sent=14508483, bytes_recv=62749361, packages_sent=84311, packages_recv=94888, errin=0, errout=0, dropin=0, dropout=0)
2) psutil.net_connections(): esta función proporciona la lista de conexiones de socket de un sistema como tuplas con nombre.
Parámetros:
- fd: el descriptor del archivo de socket.
- family: la familia de sockets, ya sea AF_INET, AF_INET6 o AF_UNIX.
- type: el tipo de socket, ya sea SOCK_STREAM, SOCK_DGRAM o SOCK_SEQPACKET.
- laddr: la dirección local como una tupla con nombre (ip, puerto)
- raddr: la dirección remota como una tupla con nombre (ip, puerto)
- estado: representa el estado de una conexión TCP.
- pid: el PID del proceso que abrió el socket, si es recuperable, de lo contrario, ninguno.
Ejemplo :
Python
import psutil print(psutil.net_connections())
Producción:
[sconn(fd=118, familia=2, tipo=1, laddr=dirección(ip=’192.168.12.184′, puerto=59666), raddr=dirección(ip=’172.217.166.42′, puerto=443), estado =’ESTABLECIDO’, pid=2428),
sconn(fd=-1, family=2, type=2, laddr=addr(ip=’0.0.0.0′, port=631), raddr=(), status=’ NINGUNO’, pid=Ninguno),
sconn(fd=-1, family=2, type=1, laddr=addr(ip=’127.0.0.1′, port=3306), raddr=(), status=’LISTEN’ , pid=Ninguno),
sconn(fd=145, familia=2, tipo=1, laddr=dirección(ip=’192.168.12.184′, puerto=56568), raddr=dirección(ip=’172.217.166.35′, puerto =443), estado=’ESTABLECIDO’, pid=2428),
sconn(fd=-1, familia=2, tipo=2, laddr=addr(ip=’0.0.0.0′, puerto=52253), raddr=( ), estado=’NINGUNO’, pid=Ninguno)]
3) psutil.net_if_addrs(): esta función se utiliza para obtener las direcciones de cada tarjeta de interfaz de red instalada en el sistema. Es un diccionario cuyas claves son los nombres de la tarjeta de interfaz de red y el valor es una lista de tuplas con nombre para cada dirección que se le asigna. Cada tupla incluye:
- family: la familia de sockets, ya sea AF_INET o AF_INET6
- dirección: la dirección NIC principal
- máscara de red: la dirección de la máscara de red
- difusión: la dirección de difusión.
- ptp – “punto a punto” es la dirección de destino en una interfaz punto a punto.
Ejemplo :
Python
import psutil print(psutil.net_if_addrs())
Producción:
{‘wlo1′: [snicaddr(familia=2, dirección=’192.168.12.184′, máscara de red=’255.255.255.0′, transmisión=’192.168.12.255′, ptp=Ninguno), snicaddr(familia=10, dirección=’ fe80::664f:767c:91f0:71c0%wlo1′, netmask=’ffff:ffff:ffff:ffff::’, broadcast=Ninguno, ptp=Ninguno), snicaddr(familia=17, dirección=’3c:f8: 62:32:b7:70′, máscara de red=Ninguno, broadcast=’ff:ff:ff:ff:ff:ff’, ptp=Ninguno)], ‘lo’: [snicaddr(familia=2, dirección=’127.0 .0.1′, máscara de red=’255.0.0.0′, transmisión=Ninguno, ptp=Ninguno), snicaddr(familia=10, dirección=’::1′, máscara de red=’ffff:ffff:ffff:ffff:ffff:ffff: ffff:ffff’, transmisión=Ninguna, ptp=Ninguna), snicaddr(familia=17, dirección=’00:00:00:00:00:00′, máscara de red=Ninguna, transmisión=Ninguna, ptp=Ninguna)], ‘docker0′: [snicaddr(familia=2, dirección=’172.17.0.1′, máscara de red=’255.255.0.0′, difusión=’172.17.255.255′, ptp=Ninguno), snicaddr(familia=17, dirección=’02 :42:ef:4c:3b:d9′, máscara de red=Ninguno, broadcast=’ff:ff:ff:ff:ff:ff’,ptp=Ninguno)], ‘eno1′: [snicaddr(familia=17, dirección=’3c:52:82:09:8e:c2′, máscara de red=Ninguno, broadcast=’ff:ff:ff:ff:ff: ff’, ptp=Ninguno)]}
Sensores
1) psutil.sensors_temperatures()- Esta función devuelve las temperaturas del hardware del sistema en grados Celsius. Cada entrada es una tupla con nombre que representa un cierto sensor de temperatura de hardware.
Ejemplo :
Python
import psutil print(psutil.sensors_temperatures())
Producción:
{‘acpitz’: [shwtemp(etiqueta=”, actual=27,8, alto=119,0, crítico=119,0), shwtemp(etiqueta=”, actual=29,8, alto=119,0, crítico=119,0), shwtemp(etiqueta=”, actual=10.0, alto=Ninguno, crítico=Ninguno)], ‘coretemp’: [shwtemp(etiqueta=’Identificación física 0′, actual=42.0, alto=100.0, crítico=100.0), shwtemp(etiqueta=’Core 0′ , actual=41,0, alta=100,0, crítica=100,0), shwtemp(etiqueta=’Núcleo 1′, actual=41,0, alta=100,0, crítica=100,0), shwtemp(etiqueta=’Identificación física 0′, actual=42,0, alto=100,0, crítico=100,0), shwtemp(etiqueta=’Núcleo 0′, actual=41,0, alto=100,0, crítico=100,0), shwtemp(etiqueta=’Núcleo 1′, actual=41,0, alto=100,0, crítico= 100.0)]}
2) psutil.sensors_fans(): esta función brinda los detalles de la velocidad de los ventiladores de hardware expresada en RPM (rondas por minuto). Si los sensores no son compatibles con el sistema operativo, se devuelve un dict vacío.
Ejemplo :
Python
import psutil print(psutil.sensors_fans())
Producción:
{'asus': [sfan(label='cpu_fan', current=3000)]}
3) psutil.sensors_battery(): esta función brinda información sobre el estado de la batería como una tupla con nombre.
Parámetros:
- porcentaje: energía restante de la batería como porcentaje.
- secsleft: un tiempo aproximado en segundos antes de que la batería se descargue por completo.
- power_plugged: verdadero si el cable de alimentación de CA está conectado, falso si no está conectado.
Ejemplo :
Python
import psutil print(psutil.sensors_battery())
Producción:
sbattery(porcentaje=98.98572501878287, segsleft=22913, power_plugged=False)
Otra información del sistema
1) psutil.boot_time(): esta función devuelve el tiempo de arranque del sistema, que se expresa en segundos desde la época.
Ejemplo :
Python
import psutil, datetime print(psutil.boot_time())
Producción:
1582860765.0
2) psutil.users(): esta función proporciona la lista de usuarios que están conectados en el sistema como tuplas con nombre.
Parámetros:
- usuario: es el nombre del sistema del usuario.
- terminal: el tty del usuario.
- host: el nombre de host del usuario.
- comenzó: el tiempo de creación como un número de coma flotante expresado en segundos desde la época.
- pid: el PID del proceso de inicio de sesión.
Ejemplo :
Python
import psutil print(psutil.users())
Producción:
[suser(nombre=’admin1′, terminal=’tty7′, host=’localhost’, iniciado=1582860800.0, pid=1747)]
Publicación traducida automáticamente
Artículo escrito por rupanisweety y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA