I need to access the elapsed time since startup in nanoseconds from a Python program running on Mac OS X 10.6.
I use the following Carbon calls to get this in C code:
AbsoluteTime uptimeAbs = AbsoluteToNanoseconds(UpTime());
uint64_t elapsedTime = ((uint64_t)uptimeAbs.hi << 32) + uptimeAbs.lo;
Is it possible to get to these functions in Python using a Carbon or PyObjC module? I tried:
from Carbon import *
UpTime()
but got "NameError: name 'UpTime' is not defined".
How can I get access to this value from Python on OS X?
Within the code in one of the answers at CGEventTimestamp to NSDate, I found -[NSProcessInfo systemUptime], available starting in 10.6. This gives me the time in decimal seconds, which I can multiply:
from Foundation import *
NSProcessInfo.processInfo().systemUptime() * 1e9
The result does have nanosecond precision, and should work nicely for my needs.
Update: the following method also works, and is compatible with 10.5 as well:
from Quartz.QuartzCore import *
CACurrentMediaTime() * 1e9