我对异步通知器的工作原理感到困惑。通知程序中线程的确切内容是什么?just the watcher是线程的吗?还是每个处理程序函数的回调都在自己的线程上运行?
文档基本上没有提到类的细节。
发布于 2010-10-20 21:33:38
AsyncNotifier不使用线程,它使用asynchronous socket handler循环。
如果您谈论的是ThreadedNotifier,那么每个回调似乎都是在每个通知器的同一线程中调用的。
这意味着即使您有多个EventHandlers
注册到某个WatchManager
,它们也都会从同一个线程发出回调。
我找不到在哪里显式地记录了这一点,但从为ThreadedNotifier.loop()
方法生成的文档中似乎隐含了这一点,文档中写道:
事件最多每分钟(read_freq,超时)秒读取一次,并且仅当要读取的事件大小为>=阈值时才读取。
...which我的意思是,它在单个线程中作为一个相当简单的循环运行,从该循环发出回调。
我尝试过在回调函数中简单地打印threading.current_thread()
的结果,它验证了这一点。
(如果您认为有必要的话,您可以随时提交issue以请求更具体的文档。)
https://stackoverflow.com/questions/3955544
复制相似问题