Jak już wspomniano, jest to trochę bolesnego siekać , ponieważ wymaga sprawdzenia czasu każdej iteracji. Aby to zadziałało, musisz mieć zadania, które działają przez mały procent czasu oczekiwania - jeśli twoja pętla wykonuje tylko iteracje co minutę, nie będzie drukować co dziesięć sekund. Jeśli chcesz zostać przerwany, możesz rozważyć wielowątkowość, lub najlepiej, jeśli jesteś na liniach/mac/unix, sygnały. Jaka jest twoja platforma?
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)
wyjściowa:
Its been 10.016000 seconds
Its been 20.031000 seconds
Its been 30.047000 seconds
+1 O wiele ładniej niż moja odpowiedź, uwielbiam to, że pyton zawiera takie baterie. – fmark