暂停线程。定时器1小时

时间:2015-01-07 20:21:55

标签: python multithreading

我正在做的是检查网站上的新内容。 threading.Timer每50秒检查一次新内容。如果找到新内容,我希望它暂停该功能1小时。

def examplebdc ():
threading.Timer(50.00, examplebdc).start ();
#content id
wordv = 'asdfsdfm'

if any("m" in s for s in wordv):
    print("new post")
    #pause this threading.Timer (or function) for 1hr. 
examplebdc();

1 个答案:

答案 0 :(得分:0)

最简单的方法可能是在你再次调用函数之前知道等待多长时间之后才重新启动计时器:

def examplebdc():
    wordv = 'asdfsdfm'

    if any("m" in s for s in wordv):
        print("new post")
        threading.Timer(60*60, examplebdc).start()
    else:
        threading.Timer(50, examplebdc).start()

examplebdc()

如果出于某种原因无法做到这一点,您可以更改创建和启动计时器的方式,以便稍后引用并取消它:

def examplebdc():
    # lets assume we need to set up the 50 second timer immediately
    timer = threading.Timer(50, examplebdc)   # save a reference to the Timer object
    timer.start()                             # start it with a separate statement

    wordv = 'asdfsdfm'

    if any("m" in s for s in wordv):
        print("new post")
        timer.cancel()                        # cancel the previous timer
        threading.Timer(60*60, examplebdc).start()   # maybe save this timer too?

examplebdc()

在单个函数中,这很简单,您只需使用变量即可。如果您的计时器正在其他地方启动,您可能需要使用一个或多个global语句或其他一些更复杂的逻辑来传递Timer参考。