[Python-Dev] Version 3 Proposal: thread-local data
Samuele Pedroni
pedronis at bluewin.ch
Thu Jul 1 06:30:55 EDT 2004
At 16:53 30.06.2004 -0400, Jim Fulton wrote:
> def _patch(self):
> key = object.__getattribute__(self, '_local__key')
> d = currentThread().__dict__.get(key)
> if d is None:
> d = {}
> currentThread().__dict__[key] = d
> object.__setattr__(self, '__dict__', d)
>
> # we have a new instance dict, so call out __init__ if we have
> # one
> cls = type(self)
> if cls.__init__ is not object.__init__:
> args, kw = object.__getattribute__(self, '_local__args')
> cls.__init__(self, *args, **kw)
> else:
> object.__setattr__(self, '__dict__', d)
>
> class local(_localbase):
>
> def __getattribute__(self, name):
> _patch(self)
what happens if there's a thread switch, to another thread using the local
object, here? between patching __dict__ and accessing __dict__
> return object.__getattribute__(self, name)
>
> def __setattr__(self, name, value):
> _patch(self)
> return object.__setattr__(self, name, value)
>
> def __delattr__(self, name):
> _patch(self)
> return object.__delattr__(self, name)
>
> def __del__(self):
> key = object.__getattribute__(self, '_local__key')
> for thread in enumerate():
> if key in thread.__dict__:
> del thread.__dict__[key]
>
>Any objections? Any more tricks up your sleeve Armin? :)
>
>Jim
>
>--
>Jim Fulton mailto:jim at zope.com Python Powered!
>CTO (540) 361-1714 http://www.python.org
>Zope Corporation http://www.zope.com http://www.zope.org
>
>_______________________________________________
>Python-Dev mailing list
>Python-Dev at python.org
>http://mail.python.org/mailman/listinfo/python-dev
>Unsubscribe:
>http://mail.python.org/mailman/options/python-dev/pedronis%40bluewin.ch
More information about the Python-Dev
mailing list