在一段时间间隔后停止程序执行

时间:2016-05-13 12:18:36

标签: python

我有以下代码,如果条件在一段时间内不成立,我想停止程序。假设条件(sum> 99999)在10秒的时间内为假,则该程序停止并给出当前的总和值。我在Windows上。不知道如何在Windows中做到这一点。

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

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

4 个答案:

答案 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)

有时迭代的重量足以使其他答案提出的技术变得毫无用处。如果您无法在条件下执行中断执行,thisthat配方会有所帮助。

我将复制更简单的一个(以及我在代码中更喜欢的那个):

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