A threading.Timer
выполняет функцию один раз . Эта функция может «работать вечно», если вы хотите, например:
import time
def hello():
while True:
print "Hello, Word!"
time.sleep(30.0)
Использование нескольких экземпляров Timer
потребляет значительные ресурсы без реальной добавленной стоимости. Если вы хотите быть неинвазивным для функции, которую вы повторяете каждые 30 секунд, простой способ будет выглядеть так:
import time
def makerepeater(delay, fun, *a, **k):
def wrapper(*a, **k):
while True:
fun(*a, **k)
time.sleep(delay)
return wrapper
, а затем расписание makerepeater(30, hello)
вместо hello
.
Для более сложных операций я рекомендую стандартный библиотечный модуль sched .