au début et à la fin de mon programme, j'ai
from time import strftime
print int(strftime("%Y-%m-%d %H:%M:%S")
Y1=int(strftime("%Y"))
m1=int(strftime("%m"))
d1=int(strftime("%d"))
H1=int(strftime("%H"))
M1=int(strftime("%M"))
S1=int(strftime("%S"))
Y2=int(strftime("%Y"))
m2=int(strftime("%m"))
d2=int(strftime("%d"))
H2=int(strftime("%H"))
M2=int(strftime("%M"))
S2=int(strftime("%S"))
print "Difference is:"+str(Y2-Y1)+":"+str(m2-m1)+":"+str(d2-d1)\
+" "+str(H2-H1)+":"+str(M2-M1)+":"+str(S2-S1)
Mais quand j'ai essayé de faire la différence, j'obtiens des erreurs de syntaxe .... Je fais quelques erreurs, mais je ne suis pas sûr de ce qui se passe ...
Fondamentalement, je veux simplement stocker une heure dans une variable au début de mon programme, puis enregistrer une 2e fois dans une deuxième variable près de la fin, puis au dernier bit du programme, calculer la différence et l'afficher. Je n'essaye pas de chronométrer une vitesse de fonction. J'essaie de consigner le temps qu'il a fallu à un utilisateur pour progresser dans certains menus. Quelle est la meilleure façon de procéder?
Le module datetime
fera tout le travail pour vous:
>>> import datetime
>>> a = datetime.datetime.now()
>>> # ...wait a while...
>>> b = datetime.datetime.now()
>>> print(b-a)
0:03:43.984000
Si vous ne voulez pas afficher les microsecondes, utilisez simplement (comme suggéré par gnibbler):
>>> a = datetime.datetime.now().replace(microsecond=0)
>>> b = datetime.datetime.now().replace(microsecond=0)
>>> print(b-a)
0:03:43
from time import time
start_time = time()
...
end_time = time()
seconds_elapsed = end_time - start_time
hours, rest = divmod(seconds_elapsed, 3600)
minutes, seconds = divmod(rest, 60)
Vous ne pouvez pas calculer les différences séparément ... quelle différence cela donnerait-il à 7 h 59 et à 8 h 00? Essayer
import time
time.time()
ce qui vous donne les secondes depuis le début de l'époque.
Vous pouvez ensuite obtenir le temps intermédiaire avec quelque chose comme
timestamp1 = time.time()
# Your code here
timestamp2 = time.time()
print "This took %.2f seconds" % (timestamp2 - timestamp1)
time.monotonic () (essentiellement la disponibilité de votre ordinateur en secondes) est garanti de ne pas se comporter mal lorsque l'horloge de votre ordinateur est ajustée (comme lors de la transition vers/depuis l'heure d'été).
>>> import time
>>>
>>> time.monotonic()
452782.067158593
>>>
>>> a = time.monotonic()
>>> time.sleep(1)
>>> b = time.monotonic()
>>> print(b-a)
1.001658110995777