Comment puis-je obtenir monotone durées de temps en python?

Je veux ouvrir une session combien de temps cela prend dans la vraie walltime. Actuellement, je suis en train de faire ceci:

startTime = time.time()
someSQLOrSomething()
print "That took %.3f seconds" % (time.time() - startTime)

Mais qui ne manquera pas de (produire des résultats incorrects) si l'heure est réglée pendant que la requête SQL (ou quoi que ce soit) est en cours d'exécution.

Je ne veux pas simplement référence à elle. Je veux ouvrir une session dans une application en direct afin de voir les tendances sur un système live.

Je veux quelque chose comme clock_gettime(CLOCK_MONOTONIC,...), mais en Python. Et de préférence sans avoir à écrire un module C qui appelle clock_gettime().

  • Eh bien, je ne sais pas vraiment comment souvent, c'est en réalité ajusté. Je tourne NTP. Mais avec un mononotic horloge je n'aurai pas à courir dans des trucs comme l'Oracle RAC bug où il redémarré le système, si le temps a été mis à l'envers. D'ailleurs petite NTP ajustements il y a des secondes intercalaires qui peut aller d'avant en arrière.
  • S. Lott: incorrect. "Un saut de seconde est positive ou négative-un deuxième ajustement [...]". Il est trivial de chercher. C'est la première phrase de la "seconde intercalaire" article sur Wikipédia. Alors, quand un saut de seconde est ajouté, NTP permettra de réajuster le système de remonter le temps (parce que votre système est rapide. Il n'a pas compté 23:59:60), ce qui signifie un temps.time()-base de mesure peut être négatif. Croyez-moi, beaucoup de serveurs Oracle redémarré en raison du bug je l'ai mentionné ci-dessus newyears. Et j'ai simplement utilisé Oracle comme exemple le cas de certains programmes ne peuvent pas gérer le temps de réajustements.
  • Je ne sais pas pourquoi (non corrigés) Oracle 10 fait. Il n'a tout simplement, et Oracle (la société) le confirme.
  • Je voulais juste rajouter un commentaire ici d'un cas d'utilisation que nous avons rencontrés. Au sein de notre programme d'installation qui se compose d'un certain nombre de systèmes de vmware, nous avons remarqué que le temps "ajustements" ne se produisent assez régulièrement dans les vm, en particulier avec l'hôte de la charge avg. est élevé. Il en résulte des choses comme supervisord qui semblent dépendre du temps.temps (le) de s'écraser résultant d'abandonner le processus qu'il a commencé. Nous avons ^fixe^ ce problème en appliquant le patch - github.com/Supervisor/supervisor/pull/468
  • En théorie, il pourrait être négatif des secondes intercalaires. Dans la pratique, toutes les secondes intercalaires sont positifs. Voir Le saut de seconde: son histoire et son avenir possible.
InformationsquelleAutor Thomas | 2009-07-30