J'ai vu beaucoup de scripts Python qui utilisent des threads dans une classe et beaucoup d'entre eux utilisent la threading.Event()
. Par exemple:
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)
Dans la boucle while
, pourquoi vérifient-ils la condition s'ils ne définissent pas self.event
?
Parce que quelqu'un d'autre le réglera.
Vous démarrez généralement un thread dans une partie de votre application et continuez à faire ce que vous faites:
thread = TimerClass()
thread.start()
# Do your stuff
Le fil fait ses trucs pendant que vous faites vos trucs. Si vous souhaitez terminer le fil que vous venez d'appeler:
thread.event.set()
Et le fil va s'arrêter.
La réponse est donc: event, dans ce cas, n'est pas utilisé pour contrôler le thread depuis l'intérieur de l'objet thread lui-même. Il est utilisé pour contrôler le thread depuis l'extérieur (depuis l'objet qui contient la référence au thread).