Monitoring updating directory for image for GUI

Alain Ketterlin alain at dpt-info.u-strasbg.fr
Thu Feb 7 11:25:04 CET 2013


ciscorucinski at gmail.com writes:

> Basically I am creating a program that will stream musical notes into
> a program called Lilypond one-by-one and it will create the sheet
> music for that stream of music via OS command. Your understanding of
> Lilypond is not needed, but you need to know that for each new note
> that is streamed in "real-time", a PNG image file will be created for
> that stream of music up to that point...via Lilypond.
>
> What I am looking at doing is to monitor the directory where the image
> files are being created in real-time, and update the GUI (build with
> gtk.Builder and Glade) with the most recent image file. I have the
> program multithreaded and it appears that all of the images are being
> created sequentially; however, I need to make sure that an older image
> (an image with less notes displayed) is NOT going to be displayed over
> a newer image.

The "canonical" way to monitor file system changes (in Linux) is to use
inotify. There is a python wrapper, at
https://github.com/seb-m/pyinotify

But it would be much simpler to have Lilypond (or a wrapper) write out
the name of the files it produces (e.g., to a fifo) and have your GUI to
synchronize on that.

> I have looked at creating a Stack from the python List, along with
> os.walk(). However, I am not sure if those are adequate with a
> directory that is actively adding new files. Also, how I imagined
> using the Stack with taking the next item off of the stack meant that
> older ones would be replacing new ones...and with a queue, it might be
> updating too slow; especially if the notes being streamed in are
> played fast. So I would like for the most recent image to be used and
> all others discarded.

I'm  lost.

-- Alain.



More information about the Python-list mailing list