在任何情况下都可以使用threading.Event的set()或clear()函数

时间:2016-07-09 15:26:35

标签: python multithreading python-2.7

是否存在threading.Event set()clear()失败的情况,即在没有set()等的情况下再次呼叫clear()

现在我在所有try-exceptset()来电中添加clear()阻止。

Python27 documentation中,没有具体指定。

我问过这个问题,因为直观地说,如果你设置一个已设置的布尔标志或清除它,引发异常是没有意义的。

1 个答案:

答案 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