Python中event.wait()函数的返回值是什么

1 投票
2 回答
4245 浏览
提问于 2025-04-17 17:41

假设我有这段代码

def wait_for_event(e):
    """Wait for the event to be set before doing anything"""
    logging.debug('wait_for_event starting')
    event_is_set = e.wait()
    logging.debug('event set: %s', event_is_set)

那么,e.wait() 返回的值是什么呢?

我不太明白这个。

还有一个我不太清楚的地方是,事件是如何发送到线程的。

假设我有一些线程,它们负责下载网页,而每个网页上都有经理的名字。

现在这个名字被某个人修改了。

现在我的 thread 10 首先获取到了这个变化,我想把这个新 name 通知给所有的线程,这样它们就可以在自己的代码中进行更改。

我该怎么做呢?

2 个回答

0

wait([timeout])

这个方法会让程序停下来,直到内部的一个标志变成真。如果在调用这个方法的时候,标志已经是假的,那它就会一直等,直到其他线程把这个标志设置为真,或者等到你设定的时间到了。

如果你给了一个时间限制(timeout),这个时间限制应该是一个小数,表示等待的时间,单位是秒(可以是小数部分)。

这个方法在结束时会返回内部标志的状态,所以它总是会返回真,除非你设定了时间限制,而这个时间限制到了

在2.7版本中有所改变:之前这个方法总是返回None。

2

因为在调用 e.wait() 时没有设置超时时间,所以这个方法总是返回 True。这一点在文档中有说明:

wait([timeout])

这个方法会一直等到内部的标志变成真。如果在调用时内部标志已经是true,那就会立刻返回。否则,它会一直等到其他线程调用 set() 方法把标志设为真,或者等到设置的超时时间到了。

如果有设置超时时间,并且这个时间不是None,那么这个时间应该是一个浮点数,表示操作的超时时间,单位是秒(可以是小数)。

这个方法在退出时会返回内部标志,所以除非设置了超时时间并且操作超时,否则它总是返回True。

撰写回答