python中的多个定时线程

时间:2017-01-04 22:33:04

标签: python multithreading datetime timestamp

我有一个时间戳列表,表示将来不同时间的事件。我每2分钟运行一次该函数,因为times的源列表会定期更改。

对于每个唯一的时间事件,我希望函数在事件发生之前以2个间隔运行。有两个问题。

一个是我不知道如何允许我列表中有很多事件,因为有些事件可能会与另一个正在睡觉的函数重叠(在这里汇集一个选项?)

两个是我不知道如何杀死当前的睡眠并每两分钟刷新一次。 Timer目前尚未覆盖time.sleep

任何解决方案或备选方案均值得赞赏。我查看了sched,但根据他们的文档,线程似乎是首选路由。

import datetime,time, threading

t1 = datetime.datetime.now() + datetime.timedelta(minutes=60)
t2 = datetime.datetime.now() + datetime.timedelta(minutes=62)
t3 = datetime.datetime.now() + datetime.timedelta(days=1)
t4 = datetime.datetime.now() + datetime.timedelta(days=1)

interval_minutes_before_event = [59,20]
times = [t1,t2,t3,t4]

def refresh_every_2_mins(timeslist, intervals):
    threading.Timer(120,refresh_every_2_mins)
    for event in set(timeslist):
        for interval_prior in intervals:
            print 'Sleeping for',((event - datetime.timedelta(minutes=interval_prior)) - datetime.datetime.now()).seconds, 'seconds'
            time.sleep(((event - datetime.timedelta(minutes=interval_prior)) - datetime.datetime.now()).seconds)
            # do something 
    print 'Two mins up, starting again'


refresh_every_2_mins(times,interval_minutes_before_event)

0 个答案:

没有答案