Vai al menù, saltando i contenuti (access key "m")
Python. La misura del tempo
Per avere dei riferimenti temporali in Python si usa il modulo time.
Tra le funzioni messe a disposizione dal modulo time ci sono: time()
, monotonic()
,
perf_counter()
.
Queste funzioni non fanno nient'altro che richiamare funzioni proprie del sistema operativo
su cui ci troviamo. Per avere informazioni basta usare il comando get_clock_info()
,
passando come argomento il nome (stringa) della funzione tempo di cui si vogliono le informazioni: 'time', 'monotonic', 'perf_counter'.
Facciamo un esempio su Windows 7:
import time time.get_clock_info('time') >>> namespace(adjustable=True, implementation='GetSystemTimeAsFileTime()', monotonic=False, resolution=0.015600099999999999)
Le informazioni che vengono restituite sono, in ordine: l'orologio può essere cambiato dall'esterno, infatti time() non fa altro che leggere la data e l'orario di sistema; la funzione del sistema operativo richiamata da time() è GetSystemTimeAsFileTime(); l'orologio non è monotonico, cioè può anche tornare indietro (immaginate l'ora legale o un aggiornamento automatico dell'orario del vostro PC); infine la risoluzione, 0.0156 secondi, cioè ogni quanto viene aggiornato questo orologio.
time.time() In Windows usa la funzione GetSystemTimeAsFileTime. Risoluzione 1-15 ms, accuratezza e drift "buoni" Sotto Linux... In pratica è l'orologio di sistema. Soggetto a cambiamenti. time.monotonic() In Windows usa la funzione GetTickCount64. Se si usa XP o inferiore, dopo 49 giorni si resetta. Risoluzione 15 ms, accuratezza e drift "buoni" Sotto Linux... Non soggetto a cambiamenti. Contano solo le differenze. time.perf_counter() In Windows usa la funzione QueryPerformanceCounter. Risoluzione 1 us circa, accuratezza "ottima", drift "scarso": può essere usata solo per "brevi" intervalli di tempo Sotto Linux... Non soggetto a cambiamenti. Contano solo le differenze. L'ora del bios (RTC, basata su un oscillatore al quarzo) può essere letta ma non viene praticamente mai usata perché è la meno precisa (1 secondo) e accurata (alto drift). Il sistema operativo legge l'ora del bios all'avvio ma poi ha dei metodi propri e molto più accurati per mantenere lo scorrere del tempo corretto (tipicamente si basa sul clock della CPU). Ecco i riferimenti: https://docs.python.org/3.4/library/time.html https://www.python.org/dev/peps/pep-0418 http://www.luxford.com/high-performance-windows-timers