pyinotify asyncnotifier 线程问题

1 投票
1 回答
1360 浏览
提问于 2025-04-16 05:39

我对asyncnotifier是怎么工作的有点困惑。这个通知器里到底是什么东西是线程化的?是说只有观察者是线程化的吗?还是说每个回调函数都是在自己的线程上运行的?

文档里几乎没有提到这个类的具体细节。

1 个回答

3

AsyncNotifier 这个东西不使用线程,而是用的是 异步套接字处理器 循环。

如果你说的是 ThreadedNotifier,那么每个回调似乎都是在同一个线程中被调用的,且每个通知器都是如此

这意味着即使你在某个 WatchManager 上注册了多个 EventHandlers,它们也都是从同一个线程中发出回调。

我找不到明确的文档说明这一点,但从 ThreadedNotifier.loop() 方法生成的文档中可以隐约看出,里面提到:

事件每分钟最多读取一次,时间间隔为 min(read_freq, timeout) 秒,并且只有当要读取的事件数量大于等于阈值时才会读取。

...我理解这意味着它在一个单线程中以相对简单的循环方式运行,从这个循环中发出回调。

我通过在回调中简单地打印 threading.current_thread() 的结果进行了实验,这证实了我的理解。

(如果你觉得有必要,可以随时提交一个 问题,请求更具体的文档说明。)

撰写回答