Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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?

Frage Entwicklung Python

Mitglied: mabue88

mabue88 (Level 2) - Jetzt verbinden

20.11.2013 um 13:44 Uhr, 2389 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
Linux
gelöst Schmaler Scrollbalken in Python-Anwendung (14)

Frage von indi955 zum Thema Linux ...

Python
gelöst Python 2.6 oder 3.6 wer führt aus? (2)

Frage von peterpa zum Thema Python ...

Python
Problem mit Python und imaplib2 (7)

Frage von meinsm zum Thema Python ...

Python
Python NewLine im Network Stream

Frage von Herbrich19 zum Thema Python ...

Neue Wissensbeiträge
Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(2)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Windows 10

Windows 10: Erste Anmeldung Animation deaktivieren

(3)

Anleitung von alemanne21 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Netzwerkprotokolle
gelöst Leiten "dumme" Switches VLAN-Tags mit durch? (25)

Frage von coltseavers zum Thema Netzwerkprotokolle ...

Windows Server
gelöst Neues KB für W10 1607 und W2K16 wieder mal nicht im WSUS 3.0, hat das noch jemand? (16)

Frage von departure69 zum Thema Windows Server ...

Router & Routing
FTTH bzw FTTB Router (13)

Frage von ukulele-7 zum Thema Router & Routing ...

Batch & Shell
Batch zum suchen und verschieben von Verknüpfungen (12)

Frage von zeroblue2005 zum Thema Batch & Shell ...