pynotify und Queue

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Herr Lehmann
User
Beiträge: 81
Registriert: Samstag 14. August 2010, 22:20

Hallo,

ich experimentiere zur Zeit mit der automatisierten Verarbeitung von Dateien.

Folgendes erstes Python Script ist dabei entstanden:

Code: Alles auswählen

import pyinotify
import re


wm = pyinotify.WatchManager() # Watch Manager
mask = pyinotify.IN_DELETE | pyinotify.IN_CREATE # watched events

class EventHandler(pyinotify.ProcessEvent):
    def process_IN_CREATE(self, event):

        if re.search("name", event.pathname):
           
            
            dirList=os.listdir(event.path)

            for fname in dirList:
                suche = re.search("\.exe", fname, re.I)

                if  suche :
                    print "gefunden " + fname
                    
                    filepath = event.path+"/"+fname
                    
		    func1(filepath)
		    func2(filepath)
		    func3(filepath)
                   
                    break

            
handler = EventHandler()
notifier = pyinotify.Notifier(wm, handler)
wdd = wm.add_watch('/tmp', mask, rec=True, auto_add=True)
print "Start"
notifier.loop()
Mein Problem ist, dass die func1-3 relativ viel zeit in Anspruch nehmen. Solange die Funktionen laufen wird das Verzeichnis nicht weiter überwacht. Ich habe dann versucht die func in eigene Threads auszulagern. Das funktionierte auch, allerdings können die gleichen Funktionen nicht parallel ablaufen. Deshalb bräuchte ich ein Queue System, was jeden erkannten filepath in eine Warteschlange schickt wo er sich dann von meinen func1 -3 geholt werden kann wenn diese den vorigen filepath abgearbeitet haben. Ich habe gesehen das es im threading Modul ein Queue System gibt. Weiß aber nicht genau ob und wie ich das einsetzten muss.

Ich hoffe mein Problem wird klar.

Gruß
Herr Lehmann
User
Beiträge: 81
Registriert: Samstag 14. August 2010, 22:20

Habs doch mit http://docs.python.org/library/queue.html hinbekommen. :K
Antworten