如何在脚本本身内的某个特定时间运行部分Python脚本

时间:2015-04-24 01:37:13

标签: python

我每天运行一次Python脚本4次,我想成为一个精确的,直到第二个时间。我已经在我的Mac上使用launchd做了一段时间,并且脚本已经运行了几乎我想要的第二个。例如,我已将launchd设置为在凌晨6点开始运行脚本,并且脚本通常在早上6点开始运行,加上100或200毫秒;正是我想要的。但是,由于一些未知的原因(可能是刚刚开始发生的OS X更新?),脚本现在开始运行,从早上6点开始运行几秒到几秒钟,对于脚本的最终目的。我现在正在考虑一种更健壮的方法来确保我的脚本的主要部分在我想要的第二个时间运行是在早上6点之前的某个时间启动脚本,也许是在早上5:59,然后在脚本中让它每秒检查一次(或更多),然后当我希望脚本的其余部分运行的确切秒时,脚本的其余部分将运行。所以,我的问题是,我如何在脚本本身中运行一个循环,或者其他任何循环,然后在完全(或几乎精确)的时刻,例如早上6:00:00启动脚本的其余部分?

好的,问题被标记为重复,但仍需要一点时间来找出解决问题的最佳方法。万一有人在这里寻找答案,这就是我所做的:

import datetime
import time
##### build in a timer to make sure the script starts to execute at the exact time and second, i.e. 6am, 10am, 2pm, and 6pm, PDT

secs = datetime.datetime.now().strftime("%S.%f")
secs = float(secs)
sleep_secs = 60 - secs
time.sleep(sleep_secs)

然后,仍然使用launchd,我只是将脚本设置为在我真正希望它们运行之前一分钟开始,所以如果它们开始延迟几秒并不重要。我上面提供的代码确保脚本的主要部分在一小时内完全运行。实际上,在测试时,脚本会在几小时内开始,甚至比之前更好。

0 个答案:

没有答案