繁体   English   中英

python 运行定时任务

[英]Running scheduled task in python

我有一个 python 脚本,其中某项工作需要每天早上 8 点完成。 为此,我想的是有一个 while 循环来保持程序一直运行,并在 while 循环内使用scheduler类型 package 来指定特定子例程需要启动的时间。 因此,如果有其他例程在一天的不同时间运行,这将起作用。

def job(t):
    print "I'm working...", t
    return

schedule.every().day.at("08:00").do(job,'It is 08:00')

然后让 windows 调度器运行这个程序就完成了。 但我想知道这是否非常低效,因为 while 循环会浪费 cpu 周期,而且随着程序将来变大,可能会冻结计算机。 您能否建议是否有更有效的方法来安排需要同时执行到第二个而不必运行while loop的任务?

我注意到您很难执行脚本。 只需将您的 Windows 调度程序设置为在早上 8 点前几分钟启动脚本。 脚本启动后,它将开始运行您的计划代码。 完成任务后退出脚本。 整个过程将在第二天重新开始。

这是使用Python模块schedule的正确方法

from time import sleep
import schedule


def schedule_actions():

  # Every Day task() is called at 08:00
  schedule.every().day.at('08:00').do(job, variable="It is 08:00")

  # Checks whether a scheduled task is pending to run or not
  while True:
    schedule.run_pending()

    # set the sleep time to fit your needs
    sleep(1)


def job(variable):
    print(f"I'm working...{variable}")
    return


schedule_actions()

以下是我对这个话题的其他回答:

为什么要循环? 为什么不让你的 Windows 调度程序或 Linux cron 作业运行你简单的 python 脚本来做任何事情,然后停止?

随着时间的推移,维护往往会成为一个大问题,因此请尽量保持轻量级。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM