是否存在threading.Event
set()
或clear()
失败的情况,即在没有set()
等的情况下再次呼叫clear()
现在我在所有try-except
和set()
来电中添加clear()
阻止。
在Python27 documentation中,没有具体指定。
我问过这个问题,因为直观地说,如果你设置一个已设置的布尔标志或清除它,引发异常是没有意义的。
答案 0 :(得分:1)
TLDR:不。
Event
的真实性是一个简单的布尔值,由一个锁保护。
class Event:
"""Class implementing event objects.
Events manage a flag that can be set to true with the set() method and reset
to false with the clear() method. The wait() method blocks until the flag is
true. The flag is initially false.
"""
def __init__(self):
self._cond = Condition(Lock())
self._flag = False
设置和清除只是获取锁定并设置值。没有涉及切换,也没有检查先前的值。没有明确抛出异常 - 您当然可以获得通用异常,例如KeyboardInterrupt
。