[Python] Precisione di time.time()

Manlio Perillo manlio_perillo a libero.it
Ven 22 Ago 2008 19:55:29 CEST


Listemessaggi CoPlast ha scritto:
> Un saluto a tutti.
> Avete idea di quale potrebbe essere la precisione della suddetta funzione?


E' scritto nella documentazione: 1 secondo.
Dovresti usare la funzione clock, mai time, per calcolare degli 
intervalli temporali.
La precisione di clock non è definita da POSIX, ma con una ricerca puoi 
trovare la precisione reale sui diversi sistemi operativi.


> Avrei bisogno di misurare in continuo tempi molto piccoli (decimi di 
> millisecondo), secondo voi si può fare?

Non so se abbia molto senso in Python, con tutto l'"ingombro" 
dell'interprete.

Volendo puoi usare alcune funzioni POSIX per una definizione maggiore, 
ma se resti in Python clock dovrebbe essere più che sufficiente.

Ad esempio:
http://www.opengroup.org/onlinepubs/009695399/functions/gettimeofday.html
se vuoi un equivalente di time, con risoluzione maggiore (ma la 
risoluzione non è definita da POSIX).

Oppure:
http://www.opengroup.org/onlinepubs/009695399/functions/clock_getres.html
se vuoi un equivalente di clock ad alta risoluzione.

Esempio in D: http://paste.pocoo.org/show/83035/
Ricordati di linkare alla librt, su Linux.



Il risultato che ottengo:
clock_getres CLOCK_REALTIME, sec: 0, nsec 1
clock_getres CLOCK_PROCESS_CPUTIME_ID, sec: 0, nsec 1
clock_gettime CLOCK_PROCESS_CPUTIME_ID, sec: 0, nsec 1430007
clock_gettime CLOCK_PROCESS_CPUTIME_ID, sec: 0, nsec 1445541
elapsed: 0:15534

Tuttavia è probabile che ci sia qualcosa che non va, dato che a volte 
ottengo:
clock_gettime CLOCK_PROCESS_CPUTIME_ID, sec: 0, nsec 75629
clock_gettime CLOCK_PROCESS_CPUTIME_ID, sec: 0, nsec 75630
elapsed: 0:1

e non mi sembra ragionevole.

> Devo per forza usare un kernel con patch RTAI e software scritto in C e 
> poi usato da python (con swig)? 

Dipende da cosa devi fare.
Ti consiglio di dare una occhiata a D, invece che usare C.


 > [...]



Manlio Perillo


Maggiori informazioni sulla lista Python