1

我是 python 和看门狗的新手,对快速入门示例感到困惑。在示例中,有如下代码块:

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

self.observer.join()

我找不到任何关于start,stopjoin方法的文档。此外,虽然知道 try except 中的 while 循环可能会使观察者每 5 秒运行一次,但我不明白它是如何工作的?

谁能解释一下这三种方法的作用以及循环如何工作?

4

2 回答 2

3

更新:我根据@Amit Gupta 的帖子更正了我的答案。


经过一番研究,我发现这三个方法都属于 threading.Thread 对象。

self.observer.start()创建一个新线程,

While True: time.sleep(1)保持主线程运行

当程序停止时,self.observer.stop()在线程终止之前做一些工作。(@阿米特古普塔)

self.observer.join()需要正确结束一个线程,因为“它会阻塞您正在进行调用的线程,直到 ( self.observer) 完成。” 正如 Erik Allik 在Use of threading.Thread.join()中所说

于 2017-06-25T08:46:17.380 回答
1

threading.Thread 没有为 stop() 提供任何实现。在这里阅读。此处的 Stop() 是特定于 Observer 的,在此示例代码中,它将在接收到异常时停止线程。你写的其他东西都是正确的。

于 2017-08-23T23:29:22.720 回答