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?

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top