Как уже отмечалось, это немного неприятный хак, поскольку он включает проверку времени на каждой итерации. Чтобы это работало, вам нужно иметь задачи, которые выполняются в течение небольшого процента времени ожидания - если ваш цикл повторяется только каждую минуту, он не будет распечатываться каждые десять секунд. Если вы хотите, чтобы вас прерывали, вы можете подумать о многопоточности или, предпочтительно, если вы используете сигналы linux / mac / unix. Какая у тебя платформа?
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)
Выход:
Its been 10.016000 seconds
Its been 20.031000 seconds
Its been 30.047000 seconds