[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