不幸的是,满足您的约束的唯一可能性是定期 轮询 ,例如:
import timedef 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.Events或其他方法进行检测等进行优化),但是按照您所要求的一般术语,这种低效的方法是唯一的出路。



