Come ha fatto notare, questo è un po 'di un brutto trucco , poiché implica controllare il tempo ogni iterazione. Affinché funzioni, è necessario disporre di attività eseguite per una piccola percentuale del timeout: se il ciclo esegue solo iterazioni ogni minuto, non verrà stampato ogni dieci secondi. Se vuoi essere interrotto, potresti considerare il multithreading, o preferibilmente se sei su linux/mac/unix, i segnali. Qual è la tua piattaforma?
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)
uscita:
Its been 10.016000 seconds
Its been 20.031000 seconds
Its been 30.047000 seconds
+1 Molto più bello della mia risposta, amore per quel pitone che include tali batterie. – fmark