2

我想在python中安排一个重复的定时事件,如下所示:“在时间X启动函数Y(在一个单独的线程中)并每小时重复一次”

“X”是固定时间戳

代码应该是跨平台的,所以我想避免使用像“cron”这样的外部程序来做到这一点。

代码提取:

    导入线程
    threading.Timer(10*60, mail.check_mail).start()
    #... 在此处设置定时事件
    而(1):
        print("请输入命令")
        尝试:
            命令 = raw_input()
        除了:
            继续
        句柄命令(命令)
4

1 回答 1

2

为您的日程安排创建一个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)
于 2012-05-22T10:53:21.980 回答