Comme il est indiqué, cela est un peu un hack méchant , car cela implique de vérifier l'heure à chaque itération. Pour que cela fonctionne, vous devez avoir des tâches qui s'exécutent pendant un petit pourcentage du délai d'attente - si votre boucle n'effectue que des itérations toutes les minutes, elle ne sera pas imprimée toutes les dix secondes. Si vous voulez être interrompu, vous pourriez considérer le multithreading, ou de préférence si vous êtes sous linux/mac/unix, les signaux. Quelle est votre plateforme?
import time
timeout = 10
first_time = time.time()
last_time = first_time
while(True):
pass #do something here
new_time = time.time()
if new_time - last_time > timeout:
last_time = new_time
print "Its been %f seconds" % (new_time - first_time)
Sortie:
Its been 10.016000 seconds
Its been 20.031000 seconds
Its been 30.047000 seconds
+1 Beaucoup plus agréable que ma réponse, j'adore que le python ait de telles piles. – fmark