2017-06-07 4 views
0

Je suis nouveau sur python et watchdog, et j'ai été troublé par l'exemple de quickstart. Dans l'exemple, il y a un bloc de code comme ceci:Méthode d'observateur Watchdog

self.observer.start() 
try: 
    while True: 
     time.sleep(5) 
except: 
    self.observer.stop() 
    print('Error') 

self.observer.join() 

Je ne pouvais trouver aucune documentation sur la méthode start, stop et join. Aussi, bien que sachant que la boucle while à l'intérieur essaie, sauf probablement, de faire fonctionner l'observateur toutes les 5 secondes, je ne comprends pas comment ça marche?

Quelqu'un pourrait-il m'expliquer ce que font les trois méthodes et comment fonctionne la boucle?

Répondre

1

Mise à jour: J'ai corrigé ma réponse basée sur le post de @Amit Gupta. Après quelques recherches, j'ai trouvé que les trois méthodes appartiennent à l'objet threading.Thread.

self.observer.start() crée un nouveau thread,

While True: time.sleep(1) maintient fil conducteur

Lorsque l'arrêt du programme, self.observer.stop() travaille un peu avant que le fil fin. (@Amit Gupta)

self.observer.join() est nécessaire pour terminer correctement un thread car "il bloque le thread dans lequel vous faites l'appel, jusqu'à ce que (self.observer) soit terminé." Comme dit par Erik Allik dans Use of threading.Thread.join()

0

threading.Thread ne fournit aucune implémentation pour stop(). Lisez here. Stop() ici est spécifique à Observer et dans cet exemple de code il arrêtera le thread à la réception d'une exception. Le reste du contenu que vous avez écrit est correct.