打破 pyinotify 通知程序循环

Break pyinotify notifier loop

我正在使用 pyinotify.notifier 来跟踪文本文件中的更改。

当我得到其中的特定更改时,我想打破通知程序循环。通过使用 notifier.stop() 似乎不起作用。

这是我正在尝试做的事情:

class ModHandler(pyinotify.ProcessEvent):
    def process_IN_MODIFY(self, evt):
        #... Do Stuff
        if "Expected change":
               #break notifier loop

if __name__ == "__main__":

    handler = ModHandler()
    wm = pyinotify.WatchManager()
    notifier = pyinotify.Notifier(wm, handler)
    wdd = wm.add_watch('example.file', pyinotify.IN_MODIFY)
    notifier.loop()
    #when finished the loop, do more stuff

如何打破线程循环并return到主程序?

The documentation 表示:

notifier.loop()
The call to this method is blocking until we type c-c (sigint)

这就是您需要做的。 发送一个信号。 一些方法:

  • How to send a SIGINT to Python from a bash script?
  • How to pass SIGINT to child process with Python subprocess.Popen() using shell = true
  • Send SIGINT in python to os.system
  • Send SIGINT to Python subprocess using os.kill as if pressing Ctrl+C

从 0.9.0 版本开始,您可以通过传递回调函数来停止通知程序循环。当评估为 True 时,中断循环并停止通知程序。

https://github.com/seb-m/pyinotify/wiki/Recent-Developments#changes-introduced-with-pyinotify-090