[Tutor] threading.currentThread() always same across request ?

Andreas Kostyrka andreas at kostyrka.org
Sat Apr 14 20:11:53 CEST 2007


* Kent Johnson <kent37 at tds.net> [070414 19:53]:
> Andreas Kostyrka wrote:
> > * Kent Johnson <kent37 at tds.net> [070414 19:30]:
> >> Rather than store your attributes directly in the thread, it would 
> >> probably be better to use a threading.local() object as the container.
> >> http://docs.python.org/lib/module-threading.html#l2h-3416
> >>
> >> I don't really know if it makes any difference but this is the supported 
> >> mechanism for thread-local storage.
> > 
> > Well, the other mechanism is also supported, because subclassing
> > threads is allowed, and subclasses need to keep their attributes, even
> > if accessed via threading.currentThread().
> 
> That's a good point. Does anyone know when to prefer threading.local() 
> vs thread attributes?
It's design question, I guess:

*) if you have thread subclasses, then use thread attributes.
*) if you have standard threads, then use thread.local().

The idea is, that it's "rude" to stick attributes on an object that is
not owned by you.

Rationale:
*) Somebody might decide to make threading.Thread be a new style
object with __slots__ => your code breaks.

I know, it's unprobably, but if you derive a subclass, you can be at
least sure that the object will have a __dict__ ;)

Andreas


More information about the Tutor mailing list