在一段时间后结束Python函数?

时间:2015-05-05 07:01:16

标签: python timer timeout

例如,我有这个功能:

some_global_varible = ""
def bob(some_argument, some_more):
    import time
    for x in range(10):
        print("Working")
        time.sleep(1)
    return "I finished and this is my result"

如何在一段时间内运行此功能,如果它在时间结束时没有完成。但是如果它完成得到返回的输出(如果是一个,因为可能没有,它只是结束)。

此外,这不会在Unix中运行,因为我看到了一些在Windows中无法运行的Unix示例。此外,如果您可以在函数内部更改全局变量形式,那么它将是完美的,但这是一个额外的。

首先是剩下的,如果可能的话(如果不能在没有回报的情况下检测到结束那么无关紧要,我可以包括一个回报。就像:返回"这只是为了结束&#34)

修改 " bob" funtion是一个需要10秒钟的函数的例子,但计划是在其他函数上使用它,这可能需要不确定的时间。并且不能编辑该功能以添加简单的东西以在某个时间秒停止它。

一个更好的例子可能是" pep"因为它不会自行结束。

def pep():
    import time
    while True:
        print("Working")
        time.sleep(1)

2 个答案:

答案 0 :(得分:0)

你可以使用time.time()来获取开始循环之前的当前时间,然后在每个for循环结束时,检查自那时起已经过了多长时间,如果时间过长那么你可以回来。

def bob(some_argument, some_more):
    import time
    start = time.time()
    for x in range(10):
        print("Working")
        time.sleep(1)
        if time.time() - start > 5:
            return "I took too long"
    return "I finished and this is my result"

显然用你想要使用的时间替换5,但是这段代码给了我这个输出:

Working
Working
Working
Working
Working
'I took too long'

答案 1 :(得分:-1)

你可以使用休息;

例如,如果循环计数器的值满足以下条件:

if condition:
   break;

这肯定会结束循环。