Como se ha señalado, esto es un poco de un corte desagradable , ya que implica verificar el tiempo de cada iteración. Para que funcione, necesita tener tareas que se ejecutan durante un pequeño porcentaje del tiempo de espera; si su ciclo solo itera cada minuto, no se imprimirá cada diez segundos. Si desea que lo interrumpan, puede considerar la posibilidad de subprocesamiento múltiple, o preferiblemente si está en linux/mac/unix, señales. ¿Cuál es tu plataforma?
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)
Salida:
Its been 10.016000 seconds
Its been 20.031000 seconds
Its been 30.047000 seconds
+1 Mucho mejor que mi respuesta, me encanta que Python tenga esas baterías incluidas. – fmark