2017-06-21 76 views
1

我有一个需要运行10个小时的脚本。每隔一小时,我想休息30秒,然后继续这个过程直到测试完成。每隔一小时为一个python脚本休息一下

def worker_1(ip, ask_time): 

    time_out = time.time() + ask_time*60*60 
    photo_directory = os.listdir(photo_path) 

    while time.time() < time_out: 
     take_break = time.time() + 60*60 

     while time.time() <= take_break: 
      #Send command to device 

      if time.time() == take_break: 

       action = 'DoAction' 
       arg_list = [] 
       arg_list.append(upnp_path) 
       arg_list.append(' --action=') 
       arg_list.append(action) 
       arg_list.append(' --ip=') 
       arg_list.append('34.35.35.02') 

       x = subprocess.Popen(arg_list, shell=True) 
       subprocess.call(["python" , arg_list]) 

       break 
       print "Sleep time 30 secs ..." 

      else: 
       for photo in photo_directory: 

        choice_photos_list = list()  
        image_name = ["john", "Sue", "lee"]  
        random_choice = random.choice(image_name) 

        if photo.lower().startswith(random_choice): 

         choice_photos_list.append(photo) 

         for choice_photo in choice_photos_list: 
          action = 'CancelAction' 
          arg_list = [] 
          arg_list.append(upnp_path) 
          arg_list.append(' --action=') 
          arg_list.append(action) 
          arg_list.append(' --ip=') 
          arg_list.append('34.35.35.02') 
          arg_list.append(' --img=') 
          arg_list.append(choice_photo) 

          x = subprocess.Popen(arg_list, shell=True) 

          subprocess.call(["python" , arg_list]) 

          time.sleep(30) 

当总时间完成时子流程结束。但它每隔一小时就会休息一下。任何想法将非常感激。

+2

您可能无法在休息时间准确获得时间事件。如果time.time()== take_break:'更改条件'if time.time()> = take_break:',程序可能会做你想做的事。 – JohanL

+0

@JohanL我认为这应该是一个答案 – e4c5

+0

@ e4c5也许吧,但是原始代码有一些更多的怪异特性,我不想进一步检查,所以可能需要进一步的修改。 – JohanL

回答

0
def worker_1(): 
    import time 
    Minute, Hourcount, Match = int(time.strftime("%M")), 0, time.strftime("%S") 
    while Hourcount < 10: 
     #Do Something 
     if int(time.strftime("%M")) == Minute: 
      if Match == time.strftime("%S"): 
       time.sleep(30) 
       Hourcount += 1 
       Match = time.strftime("%S") 

我复制并添加了一些我曾经写过的代码。以此为基础,并根据您的具体需求进行构建。

相关问题