Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Python: wie programmiere ich eventbasiert?

Mitglied: mabue88

mabue88 (Level 2) - Jetzt verbinden

20.11.2013 um 13:44 Uhr, 2708 Aufrufe, 1 Kommentar

Hallo,

bisher habe ich in Python immer ohne Events programmiert. Aus C# kenne ich die eventbasierte Programmierung. Dank Visual Studio lassen sich die Eventhandler schließlich schnell und einfach automatisch erstellen.

Nun würde ich aber gerne in Python gerne mit Events arbeiten. Entweder benutze ich die falschen Suchbegriffe, oder ich steige in Python einfach nicht so richtig dahinter. Im Netz konnte ich bislang nichts finden, mit dem ich in das Thema einsteigen konnte.

Als Beispeil mal folgender Code:

01.
#!/usr/bin/python
02.

03.
from thread import start_new_thread
04.
from time import sleep
05.

06.
class EventExampleClass():
07.
    def __init__(self, seconds):
08.
        start_new_thread(self.timer_thread, (seconds,))
09.
        
10.
    def timer_thread(self, seconds):
11.
        sleep(seconds)
12.
        print "Der Timer ist abgelaufen"
13.

14.

15.
if __name__ == "__main__":
16.
    print "Der Timer wird gestartet"
17.
    eec = EventExampleClass(3)
18.

19.
    while True:
20.
        pass
Mit dem Initialisieren der Klasse EventExampleClass wird ein Thread gestartet, der nach der angebenen Anzahl von Sekunden "Der Timer ist beendet" auf dem Bildschirm ausgibt.

Im Prinzip will ich, dass zwischen den Zeilen "sleep(seconds)" und "print 'Der Timer ist abgelaufen'" ein Event ausgelöst wird, auf das ich in der Main reagieren kann.

Ich für alle Tipps und Tricks dankbar!

Gruss
mabue
Mitglied: mabue88
20.11.2013 um 13:58 Uhr
Ich habe doch noch was gefunden:

http://www.valuedlessons.com/2008/04/events-in-python.html

Das Programm könnte dann so aussehen:
01.
#!/usr/bin/python
02.

03.
from thread import start_new_thread;
04.
from time import sleep;
05.

06.
class Event:
07.
    def __init__(self):
08.
        self.handlers = set()
09.

10.
    def handle(self, handler):
11.
        self.handlers.add(handler)
12.
        return self
13.

14.
    def unhandle(self, handler):
15.
        try:
16.
            self.handlers.remove(handler)
17.
        except:
18.
            raise ValueError("Handler is not handling this event, so cannot unhandle it.")
19.
        return self
20.

21.
    def fire(self, *args, **kargs):
22.
        for handler in self.handlers:
23.
            handler(*args, **kargs)
24.

25.
    def getHandlerCount(self):
26.
        return len(self.handlers)
27.

28.
    __iadd__ = handle
29.
    __isub__ = unhandle
30.
    __call__ = fire
31.
    __len__  = getHandlerCount
32.
    
33.
class EventExampleClass():
34.
    def __init__(self, seconds):
35.
        self.timer_tick = Event();
36.
        start_new_thread(self.timer_thread, (seconds,));
37.
        
38.
    def timer_thread(self, seconds):
39.
        sleep(seconds);
40.
        self.timer_tick("Der Timer wurde beendet");
41.

42.
def timer_event(message):
43.
    print message;
44.

45.
  
46.
if __name__ == "__main__":
47.
    eec = EventExampleClass(3);
48.
    eec.timer_tick += timer_event;
49.

50.
    while True:
51.
        pass;
Bitte warten ..
Ähnliche Inhalte
Python

Verschlüsslung - Alternative zu python-gnupg? (Python)

gelöst Frage von clragonPython4 Kommentare

Guten Morgen liebe Mit-Programmierer Aktuell versuche ich asynchrone Datei-Verschlüsselung, das heißt, eine Datei synchron verschlüsseln und dann das ganze ...

Python

Python - ausgabe formatieren

Frage von BadFsaadKlPython

Hallo zusammen, ich habe ein kleines Python Script geschrieben, welches als Ziel hat, mir alle Verfügbaren Lunix Updates anzuzeigen, ...

Python

Python IMAP Idle Problem

Frage von tingelPython

Hallo zusammen, ich habe in Python ein kleines Scirpt, welches Mail abruft und diese auswertet. Das läuft und läuft. ...

Python

Python Scripts ausführbar machen

gelöst Frage von istike2Python2 Kommentare

Hallo, ich müsste mich in den nächsten Wochen mit Python Scripts herumschlagen. Mein erstes "Hello, World" ist erfolgreich durchgelaufen. ...

Neue Wissensbeiträge
Backup

Veeam Agent für MS Windows - neue Version verfügbar (bedingt jedoch offenbar .NET Framework 4.6)

Information von VGem-e vor 21 StundenBackup

Moin Kollegen, einer unserer Server zeigte grad an, dass für o.g. Software ein Update verfügbar ist. Ob ein evtl. ...

Python

Sie meinen es ja nur gut - Microsoft hilft python-Entwicklern auf unnachahmliche Weise

Information von DerWoWusste vor 2 TagenPython2 Kommentare

Stellt Euch vor, Ihr nutzt python unter Windows 10 und skriptet damit regelmäßig Dinge. Nach dem Update auf Windows ...

Sicherheits-Tools

TrendMicro Worry-Free Business Security 10.0 SP1 steht in Englisch bereit mit Unterstützung für Windows 10 1903 (May Update)

Information von VGem-e vor 2 TagenSicherheits-Tools1 Kommentar

Moin Kollegen, Dann kommt wohl demnächst auch die deutschsprachige/europäische Version zur Auslieferung. Gruß VGem-e

Batch & Shell
PowerShell Konferenz - Videos online
Information von NetzwerkDude vor 3 TagenBatch & Shell

Abend, die Tage werden Videos der Talks von der diesjährigen EU Powershell Konferenz hochgeladen, sind einige Interessante dabei: MFG ...

Heiß diskutierte Inhalte
Google Android
Anbieter für Diensthandys
Frage von Pat.batGoogle Android24 Kommentare

Hallo zusammen, ich bin seit einiger Zeit zuständig für die Diensthandys bei uns in der Behörde. Eine Management Software ...

Windows Server
Windows Server 2016 einrichten
Frage von borjiaWindows Server20 Kommentare

Ich würde gerne einen Server einrichten, erstmal nur mit DNS und AD. Habe mich die letzten Wochen durch diverse ...

Exchange Server
Vorgehen um von Tobit auf Exchange zu wechseln
Frage von Martin1987Exchange Server17 Kommentare

Guten Abend Ich habe den Auftrag erhalten, unser Mail von David zu Outlook zu wechseln. Wie muss ich da ...

Microsoft Office
Office 365 eMail via Website verschicken
Frage von BiBeSoMicrosoft Office16 Kommentare

Hallo, kann man im Office 365 eMails anlegen welche zum versenden (smtp) für die Website funktionieren ? Muss man ...