Подтвердить что ты не робот

Python Threading с объектом Event

Я видел много скриптов Python, которые используют Threads в классе, и многие из них используют threading.Event(). Например:

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)

В цикле while, почему они проверяют условие, если они не устанавливают self.event?

4b9b3361

Ответ 1

Потому что кто-то другой установит его.

Обычно вы запускаете поток в одной части своего приложения и продолжаете делать все, что вы делаете:

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

В этом нищете, в то время как вы делаете свои вещи. Если вы хотите завершить поток, который вы только что вызываете:

thread.event.set()

И поток остановится.

Итак, ответ: событие в этом случае не используется для управления потоком из самого объекта потока. Он используется для управления потоком извне (из объекта, который содержит ссылку на поток).