要在调用
interval之间有几秒钟的时间重复调用一个函数,并且可以取消以后的调用:
from threading import Event, Threaddef call_repeatedly(interval, func, *args): stopped = Event() def loop(): while not stopped.wait(interval): # the first call is in `interval` secs func(*args) Thread(target=loop).start() return stopped.set
例:
cancel_future_calls = call_repeatedly(60, print, "Hello, World")# ...cancel_future_calls()
注意:
interval无论通话多长时间,此版本都会在每次通话后等待约几秒钟
func(*args)。如果节拍器状蜱期望则执行可以与被锁定
timer():
stopped.wait(interval)可以替换为
stopped.wait(interval- timer() % interval)其中
timer()定义了当前时间(秒)如(其可以是相对的),
time.time()。请参阅在Python中每x秒重复执行一个函数的最佳方法是什么?



