在Python中以纳秒获取mach_absolute_time/UpTime()
我需要在运行在Mac OS X 10.6上的Python程序中获取自启动以来经过的时间,单位是纳秒。
我在C代码中使用以下Carbon调用来获取这个时间:
AbsoluteTime uptimeAbs = AbsoluteToNanoseconds(UpTime());
uint64_t elapsedTime = ((uint64_t)uptimeAbs.hi << 32) + uptimeAbs.lo;
有没有办法通过Carbon或PyObjC模块在Python中调用这些函数?我试过:
from Carbon import *
UpTime()
但出现了“NameError: name 'UpTime' is not defined”的错误。
我该如何在OS X上通过Python获取这个值呢?
1 个回答
2
在这个回答的代码中,我发现了一个方法 -[NSProcessInfo systemUptime],这个方法从10.6版本开始可以使用。它会给我一个以小数秒为单位的时间,我可以把这个时间乘以其他值:
from Foundation import *
NSProcessInfo.processInfo().systemUptime() * 1e9
这个结果的精度可以达到纳秒级别,应该能很好地满足我的需求。
更新:下面这个方法也可以用,并且兼容10.5版本:
from Quartz.QuartzCore import *
CACurrentMediaTime() * 1e9