Seite 1 von 1
start_new_thread, kwargs, Tupel, first agrument callable?
Verfasst: Samstag 29. November 2008, 00:49
von RedSharky
Hallo Leute!
Ich habe thread nie verstanden. Und leider finde ich auch nirgendwo was erhellendes.
Auf
http://www.python.org/doc/2.5.2/lib/module-thread.html ist folgendes zu lesen:
start_new_thread(function, args[, kwargs])
Was kwargs eigentlich sind bleibt unklar. Irgend ein Tupel, aber was muss da genau rein? Und wieso? Ich brauche doch nur den verdammten Thread. In einigen Beispielen wird da irgendein Schrott reingeschrieben, aber ich verstehs nicht.
Oder kennt jemand ein gut dokumentiertes Beispiel?
Verfasst: Samstag 29. November 2008, 01:08
von str1442
thread ist ein low level Modul. Für den produktiven Einsatz bitte threading verwenden, das auf thread aufbaut.
kwargs bezeichnet beliebig genannte Zusatzargumente, die nicht positional, sondern über keywörter (bzw variablennamen, heißt allerdings keyword bei Argumenten).
Schau mal im Wiki unter threading, da ist etwas zusammengetragen.
Threads an sich sind unabhängig voneinander ablaufende "Prozesse", die sich den gleichen Speicher (samt Namespace natürlich) teilen. Also praktisch wirklich "Prozesse", nur eben in kleiner und zur Vernetzung gedacht. Dabei können natürlich allerlei Probleme auftreten.
Verfasst: Samstag 29. November 2008, 02:03
von RedSharky
Wenn das Beispiel im Wiki durchlaufen würde, könnte es mir vielleicht helfen... Was ist da schon wieder verkehrt?
Und wieso soll man nicht start_new_thread benutzen? Hab ich ja noch nirgends gelesen. threading will immer gleich Klassen haben. Das ist doch oft überdimensioniert oder?
Verfasst: Samstag 29. November 2008, 08:59
von BlackJack
@RedSharky: Wenn es durchlaufen würde? Hast Du den Quelltext gelesen und das ``time.sleep(10)`` gesehen und verstanden, dass das an der Stelle 10 Sekunden wartet?
In der Dokumentation, auf die Du verlinkst, steht auch etwas mehr als nur die Funktionssignatur, da steht auch was `kwargs` ist:
The optional kwargs argument specifies a dictionary of keyword arguments.
`threading` verwendet Klassen, man muss aber nicht unbedingt selber welche schreiben. Man kann einem `Thread` beim Erstellen über das `target`-Argument auch ein "callable" geben und über `args` und `kwargs` beliebige Argumente. Und man hat dann `Thread`-Exemplare mit nützlichen Methoden wie zum Beispiel `join()` -- das halte ich absolut nicht für überdimensioniert.
In Python 3.0 wird aus dem `thread`-Modul das `_thread`-Modul und spätestens dann sollte man sich gut überlegen, ob man das direkt benutzen möchte.
Verfasst: Samstag 29. November 2008, 09:58
von RedSharky
Ich werd verrckt!
.. denke hier gibts ein ganz anderes Problem:
Wenn ich Idle nehme läuft es, mit SPE aber nicht!!!
Das hatte ich ja noch nie! SPE meint, dass diverse Sachen nicht callable sind.
Hattet ihr das auch schon mal? Woran könnte das jetzt liegen. Wenn die Installation nicht beschädigt ist, dann hat SPE mein Vertrauen verloren. Ach ja, hatte ich schon erwähnt, dass ich seit heute morgen auf der Suche nach einem neuen Editor bin... Irgendwelche Empfehlungen.
Mein bisheriger Werdegang: Idle (irgendwie buggy), Eclipse (zu groß), SPE (eigentlich Ok, aber).
Verfasst: Samstag 29. November 2008, 17:39
von BlackJack
@RedSharky: Die Beschreibung ist nicht so hilfreich. Was sind "diverse Sachen", wie sieht der Quelltext aus, wie sieht der Traceback aus?
Verfasst: Sonntag 30. November 2008, 00:00
von Sr4l
Nutz einfach nicht die Editoren um ein Programm laufen zu lassen.