Guten Morgen Python-Forum,
ich habe eine kleine Frage:
Ich lerne gerade wie man Ereignisgesteuerte Programme schreibt.(also wie man sieht bin ich noch nicht sehr weit) Und da kam mir die Idee zu einem Programm in dem man sobald man etwas mit der Tastatur macht ODER mit der Mouse macht passiert. Das heißt ich müsste zwei Funktionen gleichzeitig laufen lassen. Dazu habe ich in Google dann dies hier gefunden: http://sunjy.de/python/threads.html
Nun dies Verstehe ich leider nicht so ganz.
Wenn ich nun die zwei Funktionen "onkey(irgendwas)" und "onklick(irgendwas) (irgendwas ist irgendeine Aktion) habe. Wie kann ich nun diese zwei Funktionen simultan laufen lassen?
Ich bedanke mich im Voraus.
MfG
Dango
Threading...Brauche eine einfache Erklärung
ACHTUNG ANFÄNGER!! Ich entschuldige mich im Voraus für dumme Fragen :-(
@Dango: Die Idee von ereignisgesteuerter Programmierung ist doch gerade, dass man für so etwas Ergeignisse benutzt und eben nicht eine Funktion, die aktiv auf Tasten wartet und eine die aktiv die Maus abfragt.
@BlackJack
Vielen Dank für die Verbesserung. Dann habe ich das falsch verstanden.
Doch es würde mich dann doch zu sehr für die Zukunft interessieren wie so etwas mit dem Threading funktioniert.
Kann mir das einer in einem extremst einfachen beispiel erklären?
Vielen Dank für die Verbesserung. Dann habe ich das falsch verstanden.
Doch es würde mich dann doch zu sehr für die Zukunft interessieren wie so etwas mit dem Threading funktioniert.
Kann mir das einer in einem extremst einfachen beispiel erklären?
ACHTUNG ANFÄNGER!! Ich entschuldige mich im Voraus für dumme Fragen :-(
-
- User
- Beiträge: 221
- Registriert: Sonntag 1. Juni 2008, 09:08
Code: Alles auswählen
>>> import thread # Thread importieren
>>> import time # Time importieren für `sleep`
>>> def test(): # Funktion, die aufgerufen wird, um Test zu sehen
time.sleep(1) # Einen Stop des Programmablaufs für 1 Sekunde bewirken
print "Thread!" # Nach dem Stop "Thread!" ausgeben
>>> def startThread(): # Funktion um Thread zu starten
thread.start_new_thread(test, ()) # Thread wird durch das `thread` Module gestartet. 1. Parameter ist Funktion, 2. die Argumente
print "Kein Thread!" # Ausgabe von "Kein Thread!"
>>> def startOhne(): # Funktion zum testen ohne Thread
test() # Funktion mit `sleep` ausführen
print "Kein Thread!" # Danach Text ausgeben
>>> startThread() # Zuerst ein Test mit Thread
Kein Thread! # "Kein Thread" wird zuerst ausgegeben, obwohl es _nach_ dem starten des Threads folgt
>>> Thread! # Dieser Text folgt 1 Sekunde später, da `sleep` Seperat ausgeführt wurde und nur für den aktuellen Thread gilt
>>> startOhne() # Dann ein Test ohne Thread
Thread! # Code wird nacheinander ausgeführt, 1 Sekunde warten, dann "Thread!" shreiben
Kein Thread! # Direkt danach folgt "Kein Thread!", da `sleep` diesmal für die komplette Python Instanz galt und deshalb alles anhielt.

~ Chris[/code]
Zuletzt geändert von theliquidwave am Sonntag 21. Juni 2009, 12:06, insgesamt 1-mal geändert.
Grüßle.
@Chrisber
Vielen Vielen Dank dafür.
Doch könntest du vielleicht immer was zu den Zeilen sagen?
Ich bin leider noch ein sehr unerfahrener Anfänger und kann leder noch nicht erkennen was man sich aus manchen Ergebnissen ableiten kann.
Vielen Dank im Voraus
MfG
Dango
Vielen Vielen Dank dafür.
Doch könntest du vielleicht immer was zu den Zeilen sagen?
Ich bin leider noch ein sehr unerfahrener Anfänger und kann leder noch nicht erkennen was man sich aus manchen Ergebnissen ableiten kann.
Vielen Dank im Voraus
MfG
Dango
ACHTUNG ANFÄNGER!! Ich entschuldige mich im Voraus für dumme Fragen :-(
-
- User
- Beiträge: 221
- Registriert: Sonntag 1. Juni 2008, 09:08
Hi.
Habs mal reineditiert.
Ich hoffe du verstehst das ;P
~ Chris
Habs mal reineditiert.
Ich hoffe du verstehst das ;P
~ Chris
Grüßle.
@Dango: Unerfahrene Anfänger sollten sich noch nicht mit Threads beschäftigen. Selbst erfahrene Programmierer brauchen die sehr selten. Für rechenlastige Aktionen sind sie in CPython auch nicht geeignet.
Zur Threadprogrammierung würde ich eher auf das threading-Modul verweisen. Aber wie BlackJack schon sagte, braucht man es eher selten, es kommt halt auf die Fragestellung an (zumal Python hier gewissen Einschränkungen unterliegt).
Zur Ereignissteuerung:
Da Du von onklick() gesprochen hast, schielst Du vllt. in Richtung GUI. Alle großen GUI-Toolkits bringen den nötigen Unterbau hierfür mit, ansonsten müßtest Du das Eventhandling selber schreiben.
Zur Ereignissteuerung:
Da Du von onklick() gesprochen hast, schielst Du vllt. in Richtung GUI. Alle großen GUI-Toolkits bringen den nötigen Unterbau hierfür mit, ansonsten müßtest Du das Eventhandling selber schreiben.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Davon abgesehen dass sie ohnehin nicht threadsafe sind und daher was Threads angeht sowieso eine spezielle Behandlung benötigen.jerch hat geschrieben:Da Du von onklick() gesprochen hast, schielst Du vllt. in Richtung GUI. Alle großen GUI-Toolkits bringen den nötigen Unterbau hierfür mit, ansonsten müßtest Du das Eventhandling selber schreiben.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
@Chrisber Ich habe es nun theoretisch verstanden. Vielen vielen Dank.
@BlackJack Danke für den Rat. Dann werde ich mich doch lieber etwas gedulden,bevor ich noch wegen so etwas die Lust am Programmieren verliere.
@Alle
Vielen Dank!!!!
MfG
Dango
@BlackJack Danke für den Rat. Dann werde ich mich doch lieber etwas gedulden,bevor ich noch wegen so etwas die Lust am Programmieren verliere.
@Alle
Vielen Dank!!!!
MfG
Dango
ACHTUNG ANFÄNGER!! Ich entschuldige mich im Voraus für dumme Fragen :-(