Ich erstelle ein Projekt in Python und ich möchte ein Überwachungssystem hinzufügen, das Ereignisse und Event-Handler verwendet. Ich möchte, dass dieses System während des gesamten Projekts verfügbar ist. Ich habe die folgenden Operationen im Hinterkopf:Überwachungssystem mit Ereignissen in Python
- Definieren eines Ereignisses. Das Ereignis kann einige Daten als Parameter aufnehmen.
- Definieren eines Monitors. Ein Monitor registriert sich für ein bestimmtes Ereignis. Mehrere Monitore können sich für dasselbe Ereignis registrieren. Ich möchte verschiedene Arten von Monitoren erstellen, z. eine, um Daten zu drucken, eine, um Plots mit den Daten zu erzeugen, usw. Somit sollte ein Monitor eine Klasse sein, die alle gesammelten Daten aufnehmen kann, bis eine Methode (z. B. Drucken, Erstellen-Loggen, ...) aufgerufen wird.
- Definieren eines Event-Handlers für ein Monitor-Event-Paar. Dies definiert, wie der angegebene Monitor auf das gegebene Ereignis reagiert. Diese Aktion wird hauptsächlich lauten: Fügen Sie diese Daten zur Datenliste der Instanz einer bestimmten Monitorklasse hinzu.
- Eine Benachrichtigungsfunktion, die benachrichtigt werden kann, wenn ein Ereignis aufgetreten ist. Dies löst den Event-Handler für alle Monitore aus, die für dieses Ereignis registriert sind. Im Idealfall sollte die Benachrichtigungsfunktion von überall im Projekt aufgerufen werden können.
Wie kann ich ein solches System erstellen? Gibt es Bibliotheken, die mir dabei helfen können? Ich frage mich besonders, wie ich dieses System so gestalten kann, dass es während des gesamten Projekts transparent verfügbar ist.
Ist das etwas, Link zu Ihrer Notwendigkeit entsprechen? https://StackOverflow.com/Questions/1092531/Event-System-in-Python –
@LudovicGuerra Dies ist sicherlich hilfreich, z. Blinker sieht gut aus. Aber ich suche den Handler, um eine Klasse und keine einfache Funktion zu sein. In dieser Klasse würde ich alle Daten sammeln und dann eine Funktion aufrufen, z. um in CSV zu exportieren oder ein Diagramm der protokollierten Daten zu erstellen. – JNevens