2014-09-26 4 views

ответ

0

Вы можете позвонить timer.cancel() в тело функции, которая должна его прервать.

def some_func(): 
    print "Some function that runs after a timeout" 


def interrupt_func(): 
    timer.cancel() # some_func will no longer be called 
    # other stuff 

timer = threading.Timer(20, some_func) 
time.sleep(10) 
interrupt_func() 
+0

Как я могу проверить, работает ли таймер или нет в interrupt_func()? –

+0

@PranavRaj Вы можете вызвать 'cancel', даже если таймер уже истек, но вы можете вызвать' timer.finished.is_set() ', чтобы увидеть, что таймер был отмечен как« законченный », что означает, что он побежал или был отменен. – dano

+0

Будьте осторожны при принятии решений на основе is_set. Если его False, таймер может срабатывать в любое время ... даже до следующей строки кода. – tdelaney

Смежные вопросы