[Python-Dev] threading issue: preventing starting twice
Guido van Rossum
guido at python.org
Wed Feb 25 16:40:49 EST 2004
> In the threading module, one must of course only start a thread once. I
> have some questions about handling this gracefully.
>
> First of all, the documentation only says it is an error to start a
> thread more than once. It does not say which exception is raised. On my
> system I find it is AssertionError. So...is that going to be true on all
> systems? Is the test based on "assert", in which case it will go away
> for optimized code (and then what happens)?
Hey, it's open source! You can look for yourself. :-)
Yes, the test is based on assert.
> Anyway, if it is always AssertionError, I'd like to get the docs updated
> to say that.
Disagree. You shouldn't do that. What happens if you ignore the
advice needn't be specified.
> Also...if possible, it'd be nice to have some way to ask if a thread has
> ever been started. More generally, it'd be nice to be able to determine
> what state a thread is in. I'm not sure if there are any states other
> than ready to run, running and finished. If that's it, perhaps one could
> add methods isReady and didRun (a getState method would probably be
> better if there are more states, but then one has to deal with magic
> constants).
There is isRunning(). Isn't that enough? I realize it doesn't
distinguish between "not yet running" and "no longer running", but
your application state should be enough to distinguish between the
two, right?
> I realize it is a common Python paradigm to assume something will work
> (such as starting the thread) and catch the exception if it doesn't, but:
> - this is tricky if the exception is not documented
> - sometimes one simply wants to know, without actually starting the
> thread
What's your use case? Why can't you add application-specific state
to track whatever you're interested in?
--Guido van Rossum (home page: http://www.python.org/~guido/)
More information about the Python-Dev
mailing list