我需要在脚本中等待,直到满足一定条件为止?
我知道我可以使用条件变量和朋友来滚动自己的事件,但是我不想经历实现它的所有麻烦,因为某些html" target="_blank">对象属性更改来自包装的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
s或其他方法进行检测等进行优化),但是按照您所要求的一般术语,这种低效的方法是唯一的出路。
问题内容: 我想删除一些mongodb集合,但这是一个异步任务。代码将是: 控制台显示: 确保删除所有收藏集后将被打印的最简单方法是什么?任何第三方都可以用来简化代码。 问题答案: 我看到您正在使用,因此您正在谈论服务器端JavaScript。在这种情况下,我建议您查看异步模块并使用。您会发现此模块确实有用-它是为解决您所遇到的问题而开发的。您的代码可能如下所示
在我的C#/XAML metro应用程序中,有一个启动长时间运行过程的按钮。因此,按照建议,我使用Async/await来确保UI线程不会被阻塞: 偶尔,GetResults中发生的事情需要额外的用户输入才能继续。为了简单起见,假设用户只需单击“Continue”按钮。 我的问题是:如何挂起GetResults的执行,让它等待一个事件,比如单击另一个按钮? 这里有一个丑陋的方法来实现我所寻找的:C
问题内容: 我有一个过程密集型任务,我想在后台运行。 用户单击一个页面,PHP脚本运行,最后,根据某些条件(如果需要),它必须运行Shell脚本EG: 当前,我使用shell_exec, 但这 需要脚本等待输出。有什么方法可以执行我想要的命令, 而无需 等待命令完成? 问题答案: 如何添加。 请注意,这也摆脱了stdio和stderr。
问题内容: 我正在建立一个带有flask的网站,其中用户具有帐户并能够登录。我正在使用flask-principal作为登录部分和角色管理。有没有办法让用户的会话在5分钟或10分钟后过期?我在flask文档或flask-principal文档中找不到该文件。 我想到了一种手动方法,在登录时在服务器端设置一个带有时间标签的变量,并在用户执行下一个操作时,服务器会验证该时间戳记上的时间增量并删除会话。
问题内容: 我不在乎有什么区别。我只想知道内容是否不同。 问题答案: 低级方式: 高级方式:
问题内容: 我非常喜欢Visual Studio在完成已编写的代码和所引用的ALSO代码(各种库/程序集)时为您提供注释文档/参数名称的方式。 在完成代码或将方法悬停在方法上时,是否有一种简单的方法可以在Eclipse中获取内联javadoc /参数名称?通过插件?通过某些设置?使用大量的库(就像在Java中经常发生的那样)然后当您将其放在源jar中时,必须去网站或本地javadoc位置查找信息,