如何判断等待事件是否超时?

1 投票
2 回答
2395 浏览
提问于 2025-04-15 20:12

这段代码是用来处理线程的。首先,它导入了一个叫做`threading`的模块,然后创建了一个事件对象`event`。接着,`event.set()`这行代码是把这个事件的状态设置为“已触发”。然后,代码会等待1秒钟,看看这个事件的状态。因为事件已经被触发,所以`event.wait(1)`会返回`None`,表示没有问题。

接下来,`event.clear()`这行代码是把事件的状态清除,也就是变成“未触发”。然后,再次调用`event.wait(1)`,这次它同样会等待1秒钟,但因为事件没有被触发,所以它也会返回`None`。

所以,不管事件是触发还是未触发,`event.wait(1)`都会返回`None`。这样一来,我就无法区分是因为超时导致的返回,还是根本没有等待就返回了。同时,文档中提到:

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

我是不是漏掉了什么?

2 个回答

3

来自threading.Event.wait的文档

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

在2.7版本中进行了更改:之前这个方法总是返回None

你正在使用哪个版本的Python?

3

是的,你漏掉了文档中的下一句话,内容是:

在2.7版本中更改:之前,这个方法总是返回None。

撰写回答