Seite 1 von 1

eigene Threads und pid

Verfasst: Samstag 18. Februar 2012, 18:16
von The Hit-Man
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?

Re: eigene Threads und pid

Verfasst: Samstag 18. Februar 2012, 18:24
von EyDu
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

Re: eigene Threads und pid

Verfasst: Samstag 18. Februar 2012, 18:26
von The Hit-Man
isch gucke ;)
aber ich dachte nen Thread ist auch nen Prozess?

Re: eigene Threads und pid

Verfasst: Samstag 18. Februar 2012, 18:31
von 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.

Re: eigene Threads und pid

Verfasst: Samstag 18. Februar 2012, 18:34
von The Hit-Man
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

Re: eigene Threads und pid

Verfasst: Samstag 18. Februar 2012, 18:46
von The Hit-Man
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.

Re: eigene Threads und pid

Verfasst: Samstag 18. Februar 2012, 18:47
von 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 ;)

Re: eigene Threads und pid

Verfasst: Samstag 18. Februar 2012, 18:57
von The Hit-Man
Oh nein :( wie peinlich. Danke ...
Habt verständnis. Ich gewöhne mir seit 2 Wochen das rauchen ab ...