Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 10, 2013 20:10:32

ksk-
От:
Зарегистрирован: 2010-05-06
Сообщения: 59
Репутация: +  0  -
Профиль   Отправить e-mail  

Выполнение кода через определённые промежутки времени.

Как выполнять один и тот же код через определённый промежуток времени?
Пока делаю так:

while True:
    ......
    time.sleep(600)
Но я не уверен, что это правильный подход.



Отредактировано ksk- (Фев. 10, 2013 21:46:33)

Офлайн

#2 Фев. 10, 2013 22:14:29

hon14o
Зарегистрирован: 2012-12-12
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Выполнение кода через определённые промежутки времени.

а “реверс” как делать? прекращение выполения процесса через час например?

Офлайн

#3 Фев. 11, 2013 09:15:09

warik
Зарегистрирован: 2013-02-06
Сообщения: 23
Репутация: +  1  -
Профиль   Отправить e-mail  

Выполнение кода через определённые промежутки времени.

Я думаю, намного проще будет использовать какой нибудь scheduler framework.

APScheduler
TGScheduler

Офлайн

#4 Фев. 11, 2013 09:41:27

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Выполнение кода через определённые промежутки времени.

ksk-
Но я не уверен, что это правильный подход.
он правильный если все устраивает.
можно сделать посимпатичнее, если не устраивает установка фреймворков, предложенных выше
import datetime
import time
def delta(*args,**kw):
    return datetime.timedelta(*args,**kw).total_seconds()
    
def repeat(interval, within=float('inf')):
    def decorator(func):
        def wrapped(*w_args,**w_kw):
            elapsed = 0
            while elapsed < within:
                func(*w_args,**w_kw)
                time.sleep(interval)
                elapsed += interval
        return wrapped
    return decorator
@repeat(interval=delta(seconds=2),
        within=delta(minutes=1))
def main():
    print('privetik')
if __name__ == '__main__':
    main()
                

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version