开发者

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

目录
  • 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)python
      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_proceDQZAjwwoVss is None:
                  print("启动子进程")
                  child_process = multiprocessing.Process(target=run_ch编程ild)
                  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编程客栈)
      DQZAjwwoVdef 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 s开发者_JAVA学习econds)..."%((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)

      总结

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

      0

      上一篇:

      下一篇:

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      最新开发

      开发排行榜