¿Una forma de "escuchar" los cambios en un sistema de archivos desde Python en Linux?

Quiero poder detectar cada vez que se crean nuevos archivos o se modifican o eliminan archivos existentes dentro de un árbol de directorios (o un conjunto de árboles) dado. La forma de fuerza bruta para hacer esto sería simplemente volver a escanear el árbol buscando cambios, pero estoy buscando una solución más "impulsada por interrupciones" donde el sistema de archivos le dice a mi código qué cambió cuando cambia, en lugar de que mi código tenga que "encuesta" al escanear continuamente a través de miles de archivos en busca de cambios.

Se prefiere una forma de hacer esto en Python, pero si tengo que escribir un módulo nativo en C, está bien como último recurso.

Respuestas a la pregunta(2)

Su respuesta a la pregunta