Event object
is used for inter thread communication. Every event object maintains a flag that
can be set to true with the set() method and reset to false with the clear()
method. ‘wait’ method blocks until the flag is true.
threading.Event
threading module
provides Event class to define Event objects. Every Event object maintains a
flag internally, by default flag is set to true.
Following
are the methods provided by Event object.
Method
|
Description
|
is_set()
|
Returns
True if the flag is set to True, else False.
|
set()
|
Sets the
flag to true. All the threads that are waiting for flag to set true are
awakened. Threads that call wait() once the flag is true will not block at
all.
|
clear()
|
Reset the
flag to false. Subsequently, threads calling wait() will block
until set() is called to set the internal flag to true again.
|
wait(timeout=None)
|
Block
until the internal flag is true or until the optional timeout occurs.
‘timeout’ is a floating point number specifying a timeout for the operation
in seconds.
|
MyThread.py
import threading import time class MyThread(threading.Thread): global event def run(self): name = threading.current_thread().getName() if(name=="publisher"): print(name, " publishng the event") event.set() else: print(name, " Waiting for the event from publisher") event.wait() print(name, " Received event from publisher") global event event = threading.Event() thread1 = MyThread(name="publisher") thread2 = MyThread(name="subscriber_1") thread3 = MyThread(name="subscriber_2") thread4 = MyThread(name="subscriber_3") thread5 = MyThread(name="subscriber_4") thread2.start() thread3.start() thread4.start() thread5.start() time.sleep(3) thread1.start()
$ python3 MyThread.py subscriber_1 Waiting for the event from publisher subscriber_2 Waiting for the event from publisher subscriber_3 Waiting for the event from publisher subscriber_4 Waiting for the event from publisher publisher publishng the event subscriber_1 Received event from publisher subscriber_2 Received event from publisher subscriber_3 Received event from publisher subscriber_4 Received event from publisher
No comments:
Post a Comment