2016-05-13 7 views
0

Ich habe den folgenden Code und ich möchte das Programm stoppen, wenn die Bedingung für eine bestimmte Zeit nicht erfüllt ist. Angenommen, die Bedingung (Summe> 99999) ist für einen Zeitraum von 10 Sekunden falsch, dann stoppt dieses Programm und gibt die aktuellen Summenwerte aus. Ich bin auf Windows. Irgendeine Idee, wie man es in Windows macht.Stoppen Sie die Programmausführung nach einem bestimmten Zeitintervall

for j in i:    
     sum=sum+A[j]   

    if(sum>99999): 
     print("Current sum is",sum) 

Antwort

1

Dies sollte erreichen, was Sie beschreiben.

import time 
import sys 

start_time = time.time() 
for j in i:    
    sum = sum + A[j]   

    if sum > 99999: 
     print("Current sum is ", sum) 
     start_time = time.time() # reset timer if the condition becomes true 
    elif time.time() - start_time >= 10: 
     print("Current sum is ", sum) 
     sys.exit() 
-1
import sys 
import time 

start_time = time.time() 
time_limit = 2 

if (comdition): 
    if((time.time() - start_time) > time_limit): 
     sys.exit() 
else: 
    #more stuff here 
+1

Sie beide Syntaxfehler und Namen Fehler haben (nicht definierte Variablen). –

0

Versuchen Sie folgendes:

import time 
import sys 

start = time.time() 
for j in i: 
    sum += A[j] 
    if sum > 99999: 
     print(sum) 
    elif time.time() - start > 10: 
     print(sum) 
     break # if you just want to exit the loop or sys.exit() if you want to exit the program 
0

Manchmal ist eine Iteration ist schwer genug, um Technik, die von anderen Antworten ziemlich nutzlos vorgeschlagen zu machen. Wenn Sie nicht die Möglichkeit haben, die Ausführung zu unterbrechen, sind this oder that Rezepte hilfreich.

Ich werde die einfachere kopieren (und die, die ich in meinem Code bevorzugen):

import threading 
def timeout(func, args=(), kwargs={}, timeout_duration=1, default=None): 
    class InterruptableThread(threading.Thread): 
     def __init__(self): 
      threading.Thread.__init__(self) 
      self.result = None 

     def run(self): 
      try: 
       self.result = func(*args, **kwargs) 
      except: 
       self.result = default 

    it = InterruptableThread() 
    it.start() 
    it.join(timeout_duration) 
    if it.isAlive(): 
     return default 
    else: 
     return it.result 
Verwandte Themen