2016-07-15 2 views
-1

У меня есть бесконечное цикл, который работает следующим образом:увеличение таймера в питона

for I in count(): 
    #doing something 
    savetask = savedata() 
    if savetask == None: 
     timerfunction() 


def timerfunction(): 
    time.sleep(60) 

Мой вопрос или, вернее, то, что я хочу, чтобы достичь является функцией, которая работает так. #do что-то, если savetask == None, спать в течение 60 секунд, повторять для цикла, если savetask == None AGAIN, спать 300 секунд, повторять цикл, если savetask == None СНОВА СНОВА, спать на 600 секунд ... и т. д. Если savetask! = None, то я хочу, чтобы он перезапустился через 60 секунд или в начале.

Нужно ли передавать дополнительные переменные, чтобы он знал, что это второй раз, когда функция запускается и savetask == Нет?

Любая помощь или руководство будут оценены.

Edit:

Так как я использую счетчик() и функцию счетчика:

def count(I=0) 
    while not finished(): 
     yield I 
     I += 1 

Означает ли это, что я увеличивается на единицу каждый раз? Поэтому, возможно, я мог бы использовать это, чтобы подсчитать, сколько раз функция запускается и перезагружает i, если savetask! = None?

+0

Почему я получил 2 голосов? ???? – Dorian

+0

где вы получаете savetask? – Hamlett

+0

@Hamlett Я редактировал мой код выше. Не уверен, что это действительно относится к проблеме, но если это помогает тогда хорошо. Перед этим еще много кода, хотя ... – Dorian

ответ

0

вы можете экспоненциальному делать что-то отсрочки, как этот

for i in count(): 
    #doing something 
    savetask = savedata() 
    if savetask == None: 
     timerfunction(i) 

def timerfunction(i): 
    time.sleep(60*2**i) 

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

+0

@James Как сбросить счет? – Dorian

+0

@Natecat Я поставил код счета там ... – Dorian

+0

@Dorian Передайте ему 0, когда u назовите его. – Natecat

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

  • Нет связанных вопросов^_^