J'ai le code suivant dans un script python:
def fun():
#Code here
fun()
Je veux exécuter ce script et aussi savoir combien de temps il a fallu pour exécuter en quelques minutes. Comment puis-je savoir combien de temps il a fallu pour exécuter ce script? Un exemple serait vraiment apprécié.
from datetime import datetime
startTime = datetime.now()
#do something
#Python 2:
print datetime.now() - startTime
#Python 3:
print(datetime.now() - startTime)
Exécutez-vous le script à partir de la ligne de commande sous Linux ou UNIX? Dans ce cas, vous pouvez simplement utiliser
time ./script.py
import time
start = time.time()
fun()
print 'It took', time.time()-start, 'seconds.'
Ce que je fais habituellement, c'est d'utiliser clock()
ou time()
de la bibliothèque time
. clock
mesure le temps d'interprétation, alors que time
mesure le temps système. Des avertissements supplémentaires peuvent être trouvés dans le docs .
Par exemple,
def fn():
st = time()
dostuff()
print 'fn took %.2f seconds' % (time() - st)
Ou bien, vous pouvez utiliser timeit
. J'utilise souvent l'approche time
en raison de la rapidité avec laquelle je peux l'exploiter, mais si vous chronométrez un morceau de code pouvant être isolé, timeit
s'avère très utile.
Depuis le timeit docs ,
def test():
"Stupid test function"
L = []
for i in range(100):
L.append(i)
if __name__=='__main__':
from timeit import Timer
t = Timer("test()", "from __main__ import test")
print t.timeit()
Ensuite, pour convertir en minutes, vous pouvez simplement diviser par 60. Si vous voulez que l'exécution du script soit dans un format facilement lisible, qu'il s'agisse de secondes ou de jours, vous pouvez convertir en timedelta
et str
it:
runtime = time() - st
print 'runtime:', timedelta(seconds=runtime)
et cela va imprimer quelque chose de la forme [D day[s], ][H]H:MM:SS[.UUUUUU]
. Vous pouvez consulter le timedelta docs .
Enfin, si vous souhaitez réellement profiler votre code, Python rend disponible la bibliothèque de profils également.
import time
startTime = time.time()
# Your code here !
print ('The script took {0} second !'.format(time.time() - startTime))
Le code précédent fonctionne pour moi sans problème!
import sys
import timeit
start = timeit.default_timer()
#do some Nice things...
stop = timeit.default_timer()
total_time = stop - start
# output running time in a Nice format.
mins, secs = divmod(total_time, 60)
hours, mins = divmod(mins, 60)
sys.stdout.write("Total running time: %d:%d:%d.\n" % (hours, mins, secs))
Utilisez le module timeit. C'est très facile. Exécutez votre fichier example.py pour qu’il soit actif dans le shell Python, vous devriez maintenant pouvoir appeler votre fonction dans le shell. Essayez-le pour vérifier que ça marche
>>>fun(input)
output
Bon, ça marche, importez maintenant timeit et configurez une minuterie
>>>import timeit
>>>t = timeit.Timer('example.fun(input)','import example')
>>>
Maintenant que notre minuterie est configurée, nous pouvons voir combien de temps cela prend
>>>t.timeit(number=1)
some number here
Et voilà, il vous dira combien de secondes (ou moins) ont été nécessaires pour exécuter cette fonction. S'il s'agit d'une fonction simple, vous pouvez l'augmenter à t.time (nombre = 1000) (ou n'importe quel nombre!), Puis diviser la réponse par le nombre pour obtenir la moyenne.
J'espère que ça aide.