我有一个python脚本,其中某项工作需要在每天上午8点完成。要做到这一点,我想的是有一个while循环来保持程序一直运行,并在while循环中使用scheduler
类型包来指定特定子程序需要启动的时间。因此,如果有其他例程在一天的不同时间运行,这将是可行的。
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()
以下是我对这个话题的其他回答:
如何在python中使用调度包在CET时间晚上8点调度作业
如何使用BlockingScheduler在5s上每10分钟运行一次任务?
每X分钟执行一次逻辑(不含cron)?
为什么要使用while循环?为什么不让你的Windows调度程序或Linux上的cron作业运行你的简单python脚本来做任何事情,然后停止呢?
随着时间的推移,维护往往会成为一个大问题,所以尽量保持轻量级。