Python Threads - stopped vs. gone vs. Alive

R

RossGK

I'm a newbie to python threads, and playing with some simple client
server stuff and lots of print statements.

My server thread launched with
self.worker = WorkerThread(self)
completes an interaction and then if I check on it's status with
print "Status:", self.worker I get Status none


A client thread behaves differently. Launched as
self.clientWorker( = ClientThreadself)
when it finishes it's work, I instead get:
Status: <ClientThread(Thread-2, stopped)>

If I check the isAlive status on each of those, self.worker.isAlive
throws an exception, 'cause there is nothing there anymore to check
isAlive on. But self.clientWorker comes back as False, since it is a
stopped thread and hasn't gone away (which I'd like it to after it
finishes its work).

So my question is when a thread finishes its work how do I more
predictably control whether it is just stopped, or goes away all
together? I don't want to do a double nested 'if' statement to check
if it exists before I check if it's alive.
 
R

RossGK

I'm a newbie to python threads, and playing with some simple client
server stuff and lots of print statements.

My server thread launched with
self.worker = WorkerThread(self)
completes an interaction and then if I check on it's status with
print "Status:", self.worker I get Status none

A client thread behaves differently. Launched as
self.clientWorker( = ClientThreadself)
when it finishes it's work, I instead get:
Status: <ClientThread(Thread-2, stopped)>

If I check the isAlive status on each of those, self.worker.isAlive
throws an exception, 'cause there is nothing there anymore to check
isAlive on. But self.clientWorker comes back as False, since it is a
stopped thread and hasn't gone away (which I'd like it to after it
finishes its work).

So my question is when a thread finishes its work how do I more
predictably control whether it is just stopped, or goes away all
together? I don't want to do a double nested 'if' statement to check
if it exists before I check if it's alive.



Pls ignore the obvious typos, this isn't a syntax question and google
groups seems to be messing with my typing and spacing(!) e.g.
self.clientWorker( = ClientThreadself)
should have read
self.clientWorker = ClientThread(self)

As I swear I had typed it...
 
R

RossGK

I've answered my own question about the "None" state - an event was
setting the thread to None where I didn't expect it.

However, my question slightly repositioned is if a Thread is "Stopped"
it still seems to exist. Is there someway to make it go away, send it
to garbage collection etc?

Other part of the original Q - I assume a Stopped thread gets a false
from "isAlive" and a Running thread gets a true?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,995
Messages
2,570,230
Members
46,818
Latest member
Brigette36

Latest Threads

Top