如何在一天的特定时间运行Python脚本?

13 浏览
0 Comments

如何在一天的特定时间运行Python脚本?

我有一个脚本需要在早上7点到晚上9点之间运行。这个脚本本来就是无限循环运行的,但如果我能在上述时间之外暂停它,那将减少它产生的数据量。

我目前在某些部分使用time.sleep(x),但是time.sleep(36000)似乎有点傻?

使用Python 2.7

提前感谢!

0
0 Comments

问题的出现的原因是用户想要在特定的时间段内运行Python脚本,而不是整天都运行。解决方法是使用时间函数来检查当前的时间,然后在需要的时候调用脚本。

可以使用以下代码来实现这个功能:

import time
import subprocess
process = None
running = False
while True:
    if time.daylight and not running:
        # 在白天运行一次
        print('Running script')
        process = subprocess.Popen("Myscript.py")
        running = True
    elif not time.daylight and running:
        # 等待到第二天再执行
        print('Terminating script')
        process.kill()
        running = False
    time.sleep(600)  # 等待10分钟

然而,这个解决方法并没有解决问题。如果你想要这样做,应该使用一个任务调度器。

0
0 Comments

在某些情况下,我们可能希望只在一天中的特定时间运行Python脚本。这可能是因为我们只想在特定的时间窗口内执行某些任务,或者因为我们想要节省系统资源并避免不必要的运行。

要解决这个问题,可以使用类似于cron的调度程序。这样可以设置定期运行脚本的时间,以便只在特定的小时范围内运行。

另一种解决方法是使用time.sleep(36000)time.sleep(10*60*60)。这种方法将使脚本无限期地休眠,然后在指定的时间后再次唤醒运行。但是,我们需要考虑time.sleep(10*60*60)的可靠性。

在使用time.sleep(10*60*60)时,需要确保系统时间是准确的,因为脚本将在指定的时间间隔后唤醒。如果系统时间发生了变化,可能会导致脚本在意外的时间运行或根本不运行。

因此,更可靠的方法是使用调度程序来运行脚本。这样可以确保脚本在预定的时间内运行,并且不受系统时间更改的影响。使用调度程序,我们可以设置脚本在一天中的特定时间运行,如每天的8点到12点之间。这样,我们可以确保脚本只在我们需要的时间窗口内运行。

总结起来,要在Python脚本中只在一天中的特定时间运行,我们可以使用调度程序或者time.sleep()函数。调度程序是更可靠和灵活的选择,可以确保脚本在指定的时间窗口内运行。而time.sleep()函数则会使脚本无限期地休眠,然后在指定的时间后再次唤醒运行。但是需要注意,time.sleep()函数需要确保系统时间准确,否则可能导致脚本在意外的时间运行或根本不运行。

0
0 Comments

如何在一天中的某个特定时间段运行Python脚本?

当你想要在一天的特定时间段运行Python脚本时,你可以使用cron作业(如果你在运行Linux系统)来实现。例如,你想要每天上午7点到9点之间执行你的Python脚本,你可以设置一个cron作业如下:

0 7 * * * /bin/execute/this/script.py

其中,0表示分钟为0,7表示小时为7,星号表示每天都运行,无论月份和星期几。

接下来,假设你想要在上午9点时自动终止程序。你可以按照以下方式编写你的Python代码,以便在2小时后自动终止:

import time
start = time.time()
PERIOD_OF_TIME = 7200 # 120分钟
while True :
    ... 做一些事情
    if time.time() > start + PERIOD_OF_TIME : break

以上代码中,我们使用了`time`模块来获取当前时间,并将其与程序开始运行的时间相比较,如果超过了指定的时间段,则终止程序。

如果你在Windows系统上运行Python脚本,可以尝试寻找与cron类似的替代方案。例如,Windows系统中的"AT"命令与cron非常相似,可以通过命令行来使用。你可以参考这个链接:stackoverflow.com/questions/132971/… 来了解更多关于Windows下的替代方案。

0