2017-10-06 3 views
1

En mettant en œuvre la lignetemps la précision de mesure

start_time = time.time() 

au début de mon code et

print("%f seconds" % (time.time() - start_time)) 

à la fin de mon code, je suis la mesure de la performance de mon script (qui peut prendre heures à courir). J'ai entendu dire que ce n'est peut-être pas la meilleure méthode parce qu'elle est inexacte. Quelle est la précision et existe-t-il une meilleure alternative?

+1

Sur une échelle de temps des heures, toute précision subsecond semble hors de propos. Quelle précision voulez-vous que vos horaires soient? – Evert

+0

Ne tenez pas compte de ce chiffre. Je suis venu pour les recommandations de la meilleure méthode. Cheers – Worm

+2

La "meilleure méthode" est quelque peu subjective. La meilleure méthode peut coûter 200K $, et ne peut donc pas être la meilleure méthode pour votre portefeuille. Aussi, voulez-vous mesurer l'heure de l'horloge murale, le temps CPU? S'il vous plaît faites votre question plus pratique. – Evert

Répondre

1

Essayez ce, timeit de la bibliothèque standard:

from timeit import default_timer as timer 
start_time = timer() 
end_time = timer()  
print(end_time - start_time)                                   
logger.info("Duration was {}".format(end_time - start_time)) 

La documentation de default_timer est d'intérêt, et devrait vraiment être cité dans la réponse: « Définir une minuterie par défaut, d'une manière spécifique à la plateforme. Sous Windows, time.clock() a une granularité de microsecondes, mais la granularité de time.time() est de 1/60ème de seconde.Sur Unix, time.clock() a une granularité de 1/100ème de seconde, et time.time() est beaucoup plus précis: sur les deux plates-formes, default_timer() mesure l'heure de l'horloge et non l'heure du processeur, ce qui signifie que d'autres processus s'exécutant sur le même ordinateur peuvent interférer avec le timing.

+1

Pourriez-vous préciser pourquoi c'est une meilleure option concernant la précision? Merci – Worm

+1

La documentation de 'default_timer' est intéressante, et devrait vraiment être citée dans la réponse:" Définir un timer par défaut, de manière spécifique à la plateforme Sous Windows, time.clock() a une granularité de microsecondes, mais time.time La granularité de() est de 1/60 de seconde Sous Unix, time.clock() a une granularité de 1/100ème de seconde, et time.time() est beaucoup plus précis Sur chaque plate-forme, default_timer() mesure le mur Cela signifie que d'autres processus s'exécutant sur le même ordinateur peuvent interférer avec le timing. " – Evert

+0

Génial merci pour cela. Je vais modifier votre réponse et l'accepter. – Worm

0

Essayez usng datetime

from datetime import datetime 
startTime = datetime.now() 
#CODE 
print("Time taken:",datetime.now() - startTime) 
+1

Pourriez-vous préciser pourquoi c'est une meilleure option concernant la précision? Merci – Worm

+1

https://docs.python.org/3/library/datetime.html –