Python中event.wait()函数的返回值是什么
假设我有这段代码
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
这个方法会让程序停下来,直到内部的一个标志变成真。如果在调用这个方法的时候,标志已经是假的,那它就会一直等,直到其他线程把这个标志设置为真,或者等到你设定的时间到了。
如果你给了一个时间限制(timeout),这个时间限制应该是一个小数,表示等待的时间,单位是秒(可以是小数部分)。
这个方法在结束时会返回内部标志的状态,所以它总是会返回真,除非你设定了时间限制,而这个时间限制到了。
在2.7版本中有所改变:之前这个方法总是返回None。
2
因为在调用 e.wait()
时没有设置超时时间,所以这个方法总是返回 True
。这一点在文档中有说明:
wait([timeout])
这个方法会一直等到内部的标志变成真。如果在调用时内部标志已经是true,那就会立刻返回。否则,它会一直等到其他线程调用
set()
方法把标志设为真,或者等到设置的超时时间到了。如果有设置超时时间,并且这个时间不是None,那么这个时间应该是一个浮点数,表示操作的超时时间,单位是秒(可以是小数)。
这个方法在退出时会返回内部标志,所以除非设置了超时时间并且操作超时,否则它总是返回True。