GNU/Linux >> Linux Esercitazione >  >> Linux

Il modo più veloce per ottenere il tempo di attività del sistema in Python in Linux

Non penso che tu possa andare molto più veloce che usare ctypes per chiamare sysinfo() ma nei miei test è più lento di /proc. Quei programmatori di sistemi Linux sembrano sapere cosa stanno facendo!

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

Eseguendo i tuoi due test più il mio sul mio laptop lento, ho ottenuto:

>>> 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

AGGIORNA

La maggior parte del tempo viene impiegata per inserire libc e creando il buffer. Se prevedi di effettuare la chiamata ripetutamente nel tempo, puoi estrarre quei passaggi dalla funzione e misurare solo la chiamata di sistema. In tal caso, questa soluzione è il chiaro vincitore:

uptime1: 5.066633300986723
uptime2: 0.11561189399799332
uptime3: 0.007740753993857652

Puoi provare a installare psutil con:

pip install psutil

e quindi utilizzare il seguente frammento di codice:

import psutil
import time


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


print seconds_elapsed()

Questa francamente sembra una soluzione molto migliore:

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

    return uptime_seconds

Ha anche l'ulteriore vantaggio di non richiedere alcun modulo aggiuntivo.

Crediti:Fonte


Linux
  1. Fai uno screenshot tramite uno script Python su Linux

  2. cronologia del tempo di attività di Linux

  3. Come ottenere la larghezza della finestra della console Linux in Python

  4. Ottieni il tempo di creazione del file con Python su Linux

  5. il modo più veloce per convertire file delimitati da tabulazioni in csv in linux

Trova i dettagli del sistema Linux usando Python

Tuptime:un'utilità CLI per trovare l'uptime del sistema Linux

Come monitorare l'uptime del sistema Linux utilizzando Uptimed

Come controllare il tempo di attività su un server Linux

Documentare il tempo di attività del sistema in Linux

Comprendere i runlevel di Linux nel modo giusto