【问题标题】:how to schedule a timed event in python如何在python中安排定时事件
【发布时间】:2012-05-28 20:29:18
【问题描述】:

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

“X”是固定时间戳

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

代码提取:

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

【问题讨论】:

  • 您需要提供有关您的应用程序的更多详细信息。它是否使用事件循环等。
  • 为什么不用cron?在 Windows 上,人们可以使用任务调度程序。

标签: python scheduler


【解决方案1】:

为您的日程安排创建一个dateutil.rrulerr,然后在您的线程中使用这样的循环:

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)

【讨论】:

    猜你喜欢
    • 2015-07-06
    • 2011-01-24
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    相关资源
    最近更新 更多