In article <200402252140.i1PLeoT08847 at guido.python.org>, Guido van Rossum <guido at python.org> wrote: > > 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. But if a feature is not documented, it could easily be changed in a future release with no warning. Thus it would be a mistake to assume that this error always raises AssertionError. (Also, since it is based on assert, the error will not even be raised if enables the optimizer?). >... > 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 am trying to determine the state of a thread, and in particular determine if it's safe to try to start it. Thus isRunning is explicitly not enough. The result is in my own code I end up writing a status layer around the thread, but I assume many other programmers have to do the same thing. It seems a rather roundabout way to do things when the threading Thread object ought to have a pretty good idea what state it is in. -- Russell
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4