pyinotify asyncnotifier 线程问题
我对asyncnotifier是怎么工作的有点困惑。这个通知器里到底是什么东西是线程化的?是说只有观察者是线程化的吗?还是说每个回调函数都是在自己的线程上运行的?
文档里几乎没有提到这个类的具体细节。
1 个回答
3
AsyncNotifier 这个东西不使用线程,而是用的是 异步套接字处理器 循环。
如果你说的是 ThreadedNotifier,那么每个回调似乎都是在同一个线程中被调用的,且每个通知器都是如此。
这意味着即使你在某个 WatchManager
上注册了多个 EventHandlers
,它们也都是从同一个线程中发出回调。
我找不到明确的文档说明这一点,但从 ThreadedNotifier.loop()
方法生成的文档中可以隐约看出,里面提到:
事件每分钟最多读取一次,时间间隔为 min(read_freq, timeout) 秒,并且只有当要读取的事件数量大于等于阈值时才会读取。
...我理解这意味着它在一个单线程中以相对简单的循环方式运行,从这个循环中发出回调。
我通过在回调中简单地打印 threading.current_thread()
的结果进行了实验,这证实了我的理解。
(如果你觉得有必要,可以随时提交一个 问题,请求更具体的文档说明。)