7.5.5 Event Objects This is one of the simplest mechanisms for
communication between threads: one thread signals an event and
other threads wait for it. An event object manages an internal
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 internal flag is initially false. Return
true if and only if the internal flag is true. Set the internal
flag to true. All threads waiting for it to become true are
awakened. Threads that call wait() once the flag is true will
not block Reset the internal flag to false. Subsequently,
threads calling wait() will block until set() is called to set
the internal flag to true again. Block until the internal flag
is true. If the internal flag is true on entry, return
immediately. Otherwise, block until another thread calls set()
to set the flag to true, or until the optional timeout occurs.
When the timeout argument is present and not None, it should be
a floating point number specify