我正在做的是检查网站上的新内容。 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();
答案 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参考。