Python accélérer les tests de Différence de Temps en millisecondes
Quelle est la bonne façon de comparer les 2 fois en Python pour test de vitesse sur une section de code? J'ai essayé de lire les docs de l'API. Je ne suis pas sûr de comprendre la timedelta chose.
Pour l'instant j'ai ce code:
from datetime import datetime
tstart = datetime.now()
print t1
# code to speed test
tend = datetime.now()
print t2
# what am I missing?
# I'd like to print the time diff here
- Pourquoi n'avez-vous pas l'impression t2-t1? Ce qui vous a empêché de la soustraction?
- Devinez, j'ai eu la "il ne pouvait pas être si facile" moment.
Vous devez vous connecter pour publier un commentaire.
datetime.timedelta
est juste la différence entre les deux datetimes ... c'est donc comme une période de temps, dans les jours /secondes /quelques microsecondesÊtre conscient que
c.microseconds
retourne seulement quelques microsecondes partie de la timedelta! Pour le calendrier des fins de toujours utiliserc.total_seconds()
.Vous pouvez faire toutes sortes de maths avec datetime.timedelta, par exemple:
Il pourrait être plus utile de regarder de temps CPU au lieu de wallclock temps si ... que du système d'exploitation à charge si ... sous les systèmes de type Unix, découvrez le "temps" de commande.
int(c.total_seconds() / 60)
dans ce casDepuis Python 2.7, il y a la timedelta.total_seconds() la méthode. Donc, pour obtenir le temps écoulé en millisecondes:
Vous pouvez utiliser le module timeit à la place.
Vous pouvez également utiliser:
Ou vous pouvez utiliser la python profileurs.
Je sais c'est tard, mais j'aime vraiment utiliser:
time.time()
vous donne de secondes depuis l'epoch. Parce que c'est une norme de temps en secondes, vous pouvez simplement soustraire l'heure de début de la fin pour obtenir le temps d'exécution (en secondes).time.clock()
est bonne pour l'analyse comparative, mais j'ai trouvé ça inutile si vous voulez savoir combien de temps votre processus a pris. Par exemple, il est beaucoup plus intuitif de dire "mon processus prend 10 secondes" que c'est-à-dire "mon processus prend 10 d'horloge du processeur unités"Dans le premier exemple ci-dessus, il affiche un temps de 0,05 pour le moment.clock() vs 0.06377 pour le moment.time()
Dans le deuxième exemple, en quelque sorte, le temps processeur indique "0", même si le processus a dormi pendant une seconde.
time.time()
montre bien à un peu plus de 1 seconde.import time
déclarationIl vous suffit d'imprimer la différence:
Le code suivant doit s'afficher le temps detla...
Je ne suis pas un programmeur Python, mais Je ne sais comment l'utiliser Google et voici ce que j'ai trouvé: vous utilisez le "-" de l'opérateur. Pour compléter votre code:
En outre, il semble que vous pouvez utiliser le strftime() la fonction format de la plage de temps de calcul afin de rendre le temps cependant vous rend heureux.
temps.time() /datetime est bon pour une utilisation rapide, mais n'est pas toujours précise à 100%. Pour cette raison, j'aime utiliser l'un des mst lib les profileurs (surtout hotshot) pour savoir ce qu'il en est.
Vous voudrez peut-être chercher dans le profil modules. Vous aurez ainsi une meilleure lecture de l'endroit où votre ralentissements, et une grande partie de votre travail sera de plein-automatisé.
Ici est une fonction personnalisée qui imitent de Matlab/Octave du
tic
toc
fonctions.Exemple d'utilisation:
Fonction :
Vous pouvez utiliser timeit de ce genre pour tester un script nommé module.py