start_new_thread, kwargs, Tupel, first agrument callable?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
RedSharky
User
Beiträge: 99
Registriert: Donnerstag 13. April 2006, 15:38

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?
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

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.
RedSharky
User
Beiträge: 99
Registriert: Donnerstag 13. April 2006, 15:38

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?
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.
RedSharky
User
Beiträge: 99
Registriert: Donnerstag 13. April 2006, 15:38

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

@RedSharky: Die Beschreibung ist nicht so hilfreich. Was sind "diverse Sachen", wie sieht der Quelltext aus, wie sieht der Traceback aus?
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Nutz einfach nicht die Editoren um ein Programm laufen zu lassen.
Antworten