gpt4 book ai didi

python - Python中是否有一种简单的方法可以等到某些条件成立?

转载 作者:IT老高 更新时间:2023-10-28 20:22:16 24 4
gpt4 key购买 nike

我需要在脚本中等待,直到一定数量的条件变为真?

我知道我可以使用条件变量和 friend 来滚动自己的事件,但我不想经历实现它的所有麻烦,因为一些对象属性更改来自包装 C++ 库(Boost. Python),所以我不能只是在一个类中劫持 __setattr__ 并在那里放置一个条件变量,这让我要么尝试从 C++ 创建和发送 Python 条件变量,要么包装一个原生的然后在 Python 中等待它,这两种方法听起来都很繁琐、不必要的复杂和无聊。

有没有更简单的方法来做到这一点,除非连续轮询条件?

理想情况下是这样的

res = wait_until(lambda: some_predicate, timeout)
if (not res):
print 'timed out'

最佳答案

不幸的是,满足您的限制的唯一可能性是定期投票,例如....:

import time

def wait_until(somepredicate, timeout, period=0.25, *args, **kwargs):
mustend = time.time() + timeout
while time.time() < mustend:
if somepredicate(*args, **kwargs): return True
time.sleep(period)
return False

之类的。如果 somepredicate 可以分解(例如,如果已知它是多个子句的 and,尤其是如果其中一些子句依次受制于通过 threading.Event 或其他任何东西等可检测到的优化,但在您要求的一般术语中,这种低效的方法是唯一的出路。

关于python - Python中是否有一种简单的方法可以等到某些条件成立?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2785821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com