用于检查超时条件的python方法

问题描述 投票:2回答:3

我需要在超时前检查一定的条件。如果在限制之前满足条件,则返回True,否则返回False。

我是按照以下方式做到这一点的

counter = 1
condition_met = False
while counter < max_limit:
    if <conditions are met>:
        condition_met = True
        break
    time.sleep(10)
    counter += 1
return condition_met

我想知道是否有更多的pythonic方式来做同样的事情。

提前感谢您的反馈

python loops condition
3个回答
2
投票

时间的一个非常好的方法是使用-shysxswpoi模块:shock

time

看到?该模块不仅仅适用于import time def foo(): max_limit = 25 # Seconds. start = time.time() condition_met = False while time.time() - start < max_limit: if <conditions are met>: condition_met = True break time.sleep(10) return condition_met ing。 sleep


2
投票

如果它不是;¬),你的循环将等同于

time.sleep

这相当于for _ in range(max_limit): if <condition>: return True # time.sleep(10) return False

因此,您可以(ab)使用return any(<condition> for _ in range(max_limit)any检查条件是否在每次检查之前等待一段时间达到一定次数:

or

这将首先评估返回any(time.sleep(10) or <condition> for _ in range(max_limit)) time.sleep,然后评估条件,直到满足条件或None耗尽。

唯一需要注意的是,这将在第一次检查病情之前调用range。要解决此问题,您可以先检查计数器变量,只有当time.sleep调用> 0时:

time.sleep

这是否比长循环更清晰是由你来决定的。


正如any(i and time.sleep(10) or <condition> for i in range(10)) 建议的那样,事实上你可以将上面的in comments条款反转为

any

这将首先检查条件,只有条件为假将any(<condition> or time.sleep(10) for _ in range(max_limit)) 。它也比上述两种appraoches更自然地准备好了。


1
投票

我假设你在函数中有一个代码。下面的代码摆脱了变量sleepcondition_met语句。

break
© www.soinside.com 2019 - 2024. All rights reserved.