GNU/Linux >> Tutoriales Linux >  >> Linux

La forma más rápida de obtener tiempo de actividad del sistema en Python en Linux

No creo que puedas hacerlo mucho más rápido que usando ctypes llamar a sysinfo() pero en mis pruebas, es más lento que /proc. ¡Esos programadores de sistemas Linux parecen saber lo que están haciendo!

import ctypes
import struct

def uptime3():
    libc = ctypes.CDLL('libc.so.6')
    buf = ctypes.create_string_buffer(4096) # generous buffer to hold
                                            # struct sysinfo
    if libc.sysinfo(buf) != 0:
        print('failed')
        return -1

    uptime = struct.unpack_from('@l', buf.raw)[0]
    return uptime

Al ejecutar sus dos pruebas más la mía en mi computadora portátil lenta, obtuve:

>>> print(timeit.timeit('ut.uptime1()', setup="import uptimecalls as ut", number=1000))
5.284219555993332
>>> print(timeit.timeit('ut.uptime2()', setup="import uptimecalls as ut", number=1000))
0.1044210599939106
>>> print(timeit.timeit('ut.uptime3()', setup="import uptimecalls as ut", number=1000))
0.11733305400412064

ACTUALIZAR

La mayor parte del tiempo se dedica a tirar de libc y creando el búfer. Si planea realizar la llamada repetidamente a lo largo del tiempo, puede extraer esos pasos de la función y medir solo la llamada al sistema. En ese caso, esta solución es la clara ganadora:

uptime1: 5.066633300986723
uptime2: 0.11561189399799332
uptime3: 0.007740753993857652

Puedes intentar instalar psutil con:

pip install psutil

y luego use el siguiente fragmento de código:

import psutil
import time


def seconds_elapsed():
    return time.time() - psutil.boot_time()


print seconds_elapsed()

Francamente, esto parece una solución mucho mejor:

def get_uptime():
    with open('/proc/uptime', 'r') as f:
        uptime_seconds = float(f.readline().split()[0])

    return uptime_seconds

También tiene el beneficio adicional de no requerir ningún módulo adicional.

Créditos:Fuente


Linux
  1. Instale AzCopy en Linux:la forma más rápida de copiar en Azure

  2. Tome una captura de pantalla a través de un script de Python en Linux

  3. historial de tiempo de actividad de linux

  4. Cómo obtener el ancho de la ventana de la consola de Linux en Python

  5. Obtenga el tiempo de creación de archivos con Python en Linux

Encuentre detalles del sistema Linux usando Python

Tuptime:una utilidad CLI para encontrar el tiempo de actividad del sistema Linux

Cómo monitorear el tiempo de actividad del sistema Linux usando Uptimed

Cómo verificar el tiempo de actividad en un servidor Linux

Documentación del tiempo de actividad del sistema en Linux

Comprender los niveles de ejecución de Linux de la manera correcta