Why GIL?
Hrvoje Niksic
hniksic at xemacs.org
Sat Jan 24 03:33:58 EST 2009
Carl Banks <pavlovevidence at gmail.com> writes:
> On Jan 23, 11:45 pm, Bryan Olson <fakeaddr... at nowhere.org> wrote:
>> Carl Banks wrote:
>> > Classes in Python are mutable types, usually. Class instances are
>> > (except for the refcount) immutable objects, usually.
>>
>> There's where we disagree. I assert that class instances are usually
>> mutable objects.
>
> Nope, you're dead wrong, nothing more to it. The bits of a class
> instance never change. The __dict__ is a mutable object. The class
> instance itself isn't. It's not reasonable to call an object whose
> bits can't change a mutable obect.
The "bits" of class instances can very well change.
>>> class X(object): pass
...
>>> x = X()
>>> d = x.__dict__
>>> x.__dict__ = {}
>>> map(id, [d, x.__dict__])
[170329876, 170330012]
The Python cookbook even describes patterns that depend on this
operation working. Class instance's contents can also change if
__slots__ is in use, when its __class__ is assigned to (admittedly the
latter being a rare operation, but still).
> Anyway, all you're doing is distracting attention from my claim that
> instance objects wouldn't need to be locked. They wouldn't, no
> matter how mutable you insist these objects whose bits would never
> change are.
Only if you're not implementing Python, but another language that
doesn't support __slots__ and assignment to instance.__dict__.
More information about the Python-list
mailing list