python怎么每天在指定时间段运行程序及关闭程序

寻技术 Python编程 2024年01月19日 81

这篇文章主要讲解了“python怎么每天在指定时间段运行程序及关闭程序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python怎么每天在指定时间段运行程序及关闭程序”吧!

    python每天在指定时间段运行程序及关闭程序

    场景

    程序需要在每天某一时间段内运行,然后在某一时间段内停止该程序。

    程序:

    from datetime import datetime, time
    import multiprocessing
    from time import sleep
    # 程序运行时间在白天8:30 到 15:30  晚上20:30 到 凌晨 2:30
    DAY_START = time(8, 30)
    DAY_END = time(15, 30)
    NIGHT_START = time(20, 30)
    NIGHT_END = time(2, 30)
    def run_child():
        while 1:
            print("正在运行子进程")
    def run_parent():
        print("启动父进程")
        child_process = None  # 是否存在子进程
        while True:
            current_time = datetime.now().time()
            running = False  # 子进程是否可运行
            if DAY_START <= current_time <= DAY_END or (current_time >= NIGHT_START) or (current_time <= NIGHT_END):
                # 判断时候在可运行时间内
                running = True
            # 在时间段内则开启子进程
            if running and child_process is None:
                print("启动子进程")
                child_process = multiprocessing.Process(target=run_child)
                child_process.start()
                print("子进程启动成功")
            # 非记录时间则退出子进程
            if not running and child_process is not None:
                print("关闭子进程")
                child_process.terminate()
                child_process.join()
                child_process = None
                print("子进程关闭成功")
            sleep(5)
    if __name__ == '__main__':
        run_parent()

    python定时程序(每隔一段时间执行指定函数)

    import os
    import time
    def print_ts(message):
        print "[%s] %s"%(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), message)
    def run(interval, command):
        print_ts("-"*100)
        print_ts("Command %s"%command)
        print_ts("Starting every %s seconds."%interval)
        print_ts("-"*100)
        while True:
            try:
                # sleep for the remaining seconds of interval
                time_remaining = interval-time.time()%interval
                print_ts("Sleeping until %s (%s seconds)..."%((time.ctime(time.time()+time_remaining)), time_remaining))
                time.sleep(time_remaining)
                print_ts("Starting command.")
                # execute the command
                status = os.system(command)
                print_ts("-"*100)
                print_ts("Command status = %s."%status)
            except Exception, e:
                print e
    if __name__=="__main__":
        interval = 5
        command = r"ls"
        run(interval, command)
    关闭

    用微信“扫一扫”