Get mach_absolute_time / UpTime () em nanossegundos em Python
-
22-07-2019 - |
Pergunta
Eu preciso acessar o tempo decorrido desde a inicialização em nanosegundos de um programa Python rodando em Mac OS X 10.6.
Eu uso o seguinte carbono chama para obter isso no código C:
AbsoluteTime uptimeAbs = AbsoluteToNanoseconds(UpTime());
uint64_t elapsedTime = ((uint64_t)uptimeAbs.hi << 32) + uptimeAbs.lo;
É possível chegar a estas funções em Python utilizando um módulo de carbono ou PyObjC? Eu tentei:
from Carbon import *
UpTime()
mas tem. "NameError: nome 'UpTime' não está definido"
Como posso obter acesso a este valor a partir de Python no Mac OS X?
Solução
Dentro do código em uma das respostas no CGEventTimestamp para NSDate , encontrei - [NSProcessInfo SystemUpTime ], disponível a partir de 10,6. Isso me dá o tempo em segundos decimais, o que eu posso multiplicar:
from Foundation import *
NSProcessInfo.processInfo().systemUptime() * 1e9
O resultado tem precisão de nanossegundos, e deve funcionar muito bem para minhas necessidades.
Update: o seguinte método também funciona, e é compatível com 10,5 assim:
from Quartz.QuartzCore import *
CACurrentMediaTime() * 1e9