Python Threading with Event object

偶尔善良 提交于 2019-11-27 13:03:28

问题


I've seen a lot of Python scripts that use Threads in a class and a lot of them use the threading.Event(). For example:

class TimerClass(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.event = threading.Event()

    def run(self):
        while not self.event.is_set():
            print "something"
            self.event.wait(120)

In the while loop, why do they check the condition if they don't set self.event?


回答1:


Because someone else will set it.

You generally start a thread in one part of your application and continue to do whatever you do:

thread = TimerClass()
thread.start()
# Do your stuff

The thread does it's stuff, while you do your stuff. If you want to terminate the thread you just call:

thread.event.set()

And the thread will stop.

So the answer is: event, in this case, is not used for controlling the thread from inside the thread object itself. It is used for controlling the thread from outside (from the object which holds the reference to the thread).



来源:https://stackoverflow.com/questions/18485098/python-threading-with-event-object

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!