2013-05-24 3 views
1

я хочу, чтобы выполнить функцию в каждом 3 секунды код работает, если я вызвать функцию без аргументов, как показано ниже:питон threading.Timer немедленно начать не в указанное время

def mytempfunc(): 
    print "this is timer!" 
    threading.Timer(5, mytempfunc).start() 

но если я вызвать функцию с аргументом вроде этого:

def myotherfunc(a,b,c,d): 
    print "this is timer!" 
    threading.Timer(5, myotherfunc(a,b,c,d)).start() 

новый поток будет создан и начат немедленно, не дожидаясь 5 секунд. есть что-нибудь, что я пропустил?

+0

Вкладки на этом неправильные, и ваш второй пример вызывает mytempfunc, что кажется неправильным. Не могли бы вы изменить свой вопрос? – Jacinda

+0

извините, исправлено. – user1229351

+0

Вкладки еще смотрят ... – Jacinda

ответ

7

Попробуйте это:

threading.Timer(5, myotherfunc, [a,b,c,d]).start() 

В вашем коде, вы на самом деле назвать myotherfunc (а, б, в, г), а не передавая ваши функции и аргументы Timer класса.

+0

Отличный улов. Я новичок в python и не могу понять, почему код ведет себя так, как он был. – Shadoninja