eigene Threads und pid

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
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

Ich starte eine Funktion, in einem eigenen Thread:

Code: Alles auswählen

            p = Process(target=myThread, args=(username,password,))
            p.start ()
Der Thread funtzt auch ohne Probleme. Nun möchte ich aber gerne die pid von dem Thread wissen. Wenn ich in dem Thread die pid abfrage, mit os.getid (), bekomme ich diese auch richtig ausgegeben. Allerdings nützt mir da die pid gar nichts. ich muß diese im Mutterprozess also vom Hauptprogramm aus wissen. Eben nach dem p.start (). Ich habs mit globalen Variablen versucht aber ich bekomme nichts zurück. Muß ich vielleicht ne Sekunde im Hauptprogramm warten? Oder gibt es da eine andere Lösung.
Das Problem is nämlich, mehere Benutzer können ihren eigenen Thread über mein Hauptprogramm starten ( server ). Nun müssen sie auch in der Lage sein, ihren Thread auch wieder killen zu können über mein Hauptprogramm. Um den richtigen Thread aber zu finden, muß ich die pid kennen.
Weiß jemand Rat?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Ich würde ja einfach in die Dokumentation zu "Process" schauen (was übrigens kein Thread ist). Es soll da angeblich so etwas wie ein pid-Attribut geben ;-)

Sebastian
Das Leben ist wie ein Tennisball.
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

isch gucke ;)
aber ich dachte nen Thread ist auch nen Prozess?
deets

Denkst du falsch. Threads sind Threads, und Prozesse sind Prozesse. Und threads haben keine PID (die heisst ja *P*rozess ID), und killen kann man die auch nicht.
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

Aha, verstehe. Nun gut, ich rutsche immer hier auf diese Seite, doch die Lösung finde ich nicht oder habe ich Tomaten auf den Augen?

http://docs.python.org/dev/library/multiprocessing.html
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

ich finde das hier:

Code: Alles auswählen

import os
import signal
import subprocess
import time
import sys

proc = subprocess.Popen(['python', 'signal_child.py'])
print 'PARENT      : Pausing before sending signal...'
sys.stdout.flush()
time.sleep(1)
print 'PARENT      : Signaling child'
sys.stdout.flush()
os.kill(proc.pid, signal.SIGUSR1)
doch das ist nicht ganz genau, das was ich suche. Denn dort wird ja ein eigenständiges Programm gestartet.
deets

Du hast definitiv zu viel Gemuese im Haus, ja.

http://docs.python.org/dev/library/mult ... ng.Process

Von da an mal ein paar Zeilen nach unten... *suchen* kann man im Browser uebrigens mittels C-f, meistens jedenfalls ;)
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

Oh nein :( wie peinlich. Danke ...
Habt verständnis. Ich gewöhne mir seit 2 Wochen das rauchen ab ...
Antworten