Ottieni mach_absolute_time / UpTime () in nanosecondi in Python
-
22-07-2019 - |
Domanda
Devo accedere al tempo trascorso dall'avvio in nanosecondi da un programma Python in esecuzione su Mac OS X 10.6.
Uso le seguenti chiamate Carbon per ottenere questo nel codice C:
AbsoluteTime uptimeAbs = AbsoluteToNanoseconds(UpTime());
uint64_t elapsedTime = ((uint64_t)uptimeAbs.hi << 32) + uptimeAbs.lo;
È possibile accedere a queste funzioni in Python usando un modulo Carbon o PyObjC? Ho provato:
from Carbon import *
UpTime()
ma ottenuto " NameError: il nome 'UpTime' non è definito " ;.
Come posso accedere a questo valore da Python su OS X?
Soluzione
All'interno del codice in una delle risposte in CGEventTimestamp to NSDate , ho trovato - [NSProcessInfo systemUptime ], disponibile a partire dal 10.6. Questo mi dà il tempo in secondi decimali, che posso moltiplicare:
from Foundation import *
NSProcessInfo.processInfo().systemUptime() * 1e9
Il risultato ha una precisione di nanosecondi e dovrebbe funzionare bene per le mie esigenze.
Aggiornamento: funziona anche il seguente metodo ed è compatibile anche con 10.5:
from Quartz.QuartzCore import *
CACurrentMediaTime() * 1e9