我有以下代码,如果条件在一段时间内不成立,我想停止程序。假设条件(sum> 99999)在10秒的时间内为假,则该程序停止并给出当前的总和值。我在Windows上。不知道如何在Windows中做到这一点。
for j in i:
sum=sum+A[j]
if(sum>99999):
print("Current sum is",sum)
答案 0 :(得分:1)
这应该完成你所描述的内容。
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 :(得分:0)
试试这个:
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
答案 2 :(得分:0)
有时迭代的重量足以使其他答案提出的技术变得毫无用处。如果您无法在条件下执行中断执行,this或that配方会有所帮助。
我将复制更简单的一个(以及我在代码中更喜欢的那个):
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
答案 3 :(得分:-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