Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 中断pyinotify通知程序循环_Python_Pyinotify - Fatal编程技术网

Python 中断pyinotify通知程序循环

Python 中断pyinotify通知程序循环,python,pyinotify,Python,Pyinotify,我正在使用pyinotify.notifier跟踪文本文件中的更改 当我得到一个具体的改变,我想打破通知循环。使用notifier.stop()似乎不起作用 以下是我想做的: class ModHandler(pyinotify.ProcessEvent): def process_IN_MODIFY(self, evt): #... Do Stuff if "Expected change": #break notifier

我正在使用
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
如何中断线程循环并返回主程序?

指出:

notifier.loop()

在我们键入
c-c
(sigint)之前,对该方法的调用一直处于阻塞状态

这就是你需要做的发送sigint信号。 一些方法可以做到这一点:


自0.9.0版以来,您可以通过传递回调函数来停止通知程序循环。当计算结果为True时,中断循环并停止通知程序


成功了。我添加了
os.kill(os.getpid(),signal.SIGINT)
,它完成了循环。谢谢你的帮助。