在凌晨0点有python运行脚本

时间:2010-09-21 19:35:35

标签: python windows multithreading time solaris

跟进,

With python: intervals at x:00 repeat

使用线程,我怎样才能让脚本从早上8点开始运行,并在下午5点停止运行

解决方案应该在python中编码,并且是可移植的

TIA

3 个答案:

答案 0 :(得分:3)

time模块有一个名为asctime的函数,可能对您有用:

>>> from time import asctime
>>> asctime()
'Tue Sep 21 17:49:42 2010'

因此,您可以在代码中加入以下内容:

sysTime = asctime()
timestamp = systime.split()[3]
separator = timestamp[2]
hour = timestamp.split(separator)[0]
while hour < 8:
    # just wait
    sysTime = asctime()
    timestamp = systime.split()[3]
    separator = timestamp[2]
    hour = timestamp.split(separator)[0]

# now, it's just become 8:00 AM
while hour < 17: # until 5:00 PM
    sysTime = asctime()
    timestamp = systime.split()[3]
    separator = timestamp[2]
    hour = timestamp.split(separator)[0]

    # start your thread to do whatever needs to be done

启动此脚本一次,让它永远运行。

这是对@ user428862的问题的回应,询问是否可以使用“小时&gt; 8小时&lt; 17”运行。这就是为此目的需要调整代码的方法:

while 1:
    sysTime = asctime()
    timestamp = systime.split()[3]
    separator = timestamp[2]
    hour = timestamp.split(separator)[0]
    minute = timestamp.split(separator)[1]

    if (hour > 8) and (hour<17 and minute<1):
        # start your thread to do whatever needs to be done

此外,我发现我一直在使用字符串拆分并返回字符串,因此hour应为int(timestamp.split(separator)[0])等等

答案 1 :(得分:2)

使用cron。如果在Windows上使用windows task scheduler

答案 2 :(得分:0)

在cron中,你需要在早上8点开始运行脚本,并在下午5点停止运行 在linux中使用 crontab -e 命令。 并为

添加此行代码
* 8 * * * /YOUR/PATH/SCRIPT

你在下午5点停止它,在这个例子中我们将在下午5点杀死所有python进程

* 17 * * * killall -9 /usr/bin/python

您可以使用 crontab -l <​​/ strong>和 crontab -r 检查crontab以重置为默认值(不会执行任何命令)