我想在python中安排一个重复的定时事件,如下所示:“在时间X启动函数Y(在一个单独的线程中)并每小时重复一次”
“X”是固定时间戳
代码应该是跨平台的,所以我想避免使用像“cron”这样的外部程序来做到这一点。
代码提取:
导入线程 threading.Timer(10*60, mail.check_mail).start() #... 在此处设置定时事件 而(1): print("请输入命令") 尝试: 命令 = raw_input() 除了: 继续 句柄命令(命令)
为您的日程安排创建一个dateutil.rrule
,rr
然后在您的线程中使用这样的循环:
for ts in rr:
now = datetime.now()
if ts < now:
time.sleep((now - ts).total_seconds())
# do stuff
或者更好的解决方案来解释时钟变化:
ts = next(rr)
while True:
now = datetime.now()
if ts < now:
time.sleep((now - ts).total_seconds() / 2)
continue
# do stuff
ts = next(rr)