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?

Frage Entwicklung Python

Mitglied: mabue88

mabue88 (Level 2) - Jetzt verbinden

20.11.2013 um 13:44 Uhr, 2445 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
Python sshpass
gelöst Frage von tommaxPython2 Kommentare

Hallo zusammen, ich habe ein Problem, was mich langsam zum Verzweifeln treibt Ich habe 2 Raspberrys, die ich einfach ...

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. ...

Assembler
Kernel programmieren.
Frage von TatonitAssembler2 Kommentare

Um den Kernel zu programmieren, muss man die "komplette" References können ? Würden also normale Tutorials ausreichen bzw. auch ...

Entwicklung
Konverter programmieren, aber wie ?
gelöst Frage von 115122Entwicklung3 Kommentare

Guten Abend, ich würde gerne mal wissen, wie es funktioniert, einen Konverter zu programmieren ? Sprich wav zu mp3 ...

Neue Wissensbeiträge
DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 2 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 2 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 6 StundenVerschlüsselung & Zertifikate

Interessant Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows SSH-Kommando in CMD.exe und PowerShell

Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 1 TagApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server19 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement17 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...